|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
||||||
Серверный движок31.05.2017, 12:52. Показов 6851. Ответов 80
Метки нет (Все метки)
привет у меня такой вопрос, делаю игру и пишу собственный серверный движок. подскажите в правильном ли я направлении двигаюсь? подойдет ли данный подход для написания своих серверов (чат, авторизация, игровой сервер)?
вот пример кода сервера авторизации который я набросал
0
|
||||||
| 31.05.2017, 12:52 | |
|
Ответы с готовыми решениями:
80
Серверный процесс Реализовать клиент-серверный чат (консольная версия) Как переписать программу под серверный вариант |
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|||||||||||||||||||||
| 04.06.2017, 19:22 [ТС] | |||||||||||||||||||||
|
вот что у меня получилось на данный момент, но выдаёт ошибку:"поток был не доступен для записи". в результате чего клиент не получает ответ сервера сообщение.
0
|
|||||||||||||||||||||
|
|
|||||||
| 04.06.2017, 19:40 | |||||||
|
Поэтому нужно : 1) Либо использовать только один блок using для всех ридеров/райтеров:
0
|
|||||||
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|
| 04.06.2017, 19:59 [ТС] | |
|
Storm23, не разобрался как сделать через перезагрузку, если можешь напиши пример плизз, пока попробую сделать в 1м блоке
Добавлено через 1 минуту Storm23, сделал в одном блоке. теперь выскакиевает:Не удается записать данные в транспортное соединение: Программа на вашем хост-компьютере разорвала установленное подключение.
0
|
|
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|
| 04.06.2017, 20:29 [ТС] | |
|
Storm23, спасибо, исправил, помогло. а каким способом будет правильнее сделать? в одном блоке или с перегрузками:?
0
|
|
|
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
|
|||||||||||||||||||||
| 05.06.2017, 00:57 | |||||||||||||||||||||
|
Вы отправляете:
К примеру просто
Лучше пользуйтесь разделителем, к примеру : Проверяйте сообщение от клиента по Regex или просто делите через Split и проверяйте, чтобы кол-во элементов в массиве к примеру равено 2 (логин и пароль)
0
|
|||||||||||||||||||||
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,116
|
||
| 05.06.2017, 05:48 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|||||||||||||||||||||
| 05.06.2017, 09:41 [ТС] | |||||||||||||||||||||
|
Usaga, вот что у меня вышло на данный момент
0
|
|||||||||||||||||||||
|
|
|
| 05.06.2017, 09:44 | |
|
wwworking, Defences,
Отправлять пароль в открытом виде вообще нельзя. Такая система элементарно взламывается. Самая простая допустимая система авторизации такова: 1) На стороне клиента пользователь вводит логин и пароль. 2) С сервера запрашивается случайное число (сам сервер это число запоминает). 3) Число и пароль складываются в одну строку и для нее считается хеш каким либо алгоритмом (например md5). 4) Серверу отправляется логин и вычисленный хеш. 5) Сервер принимает логин/хеш, по логину ищет пароль в своей базе данных, складывает с числом, считает хеш таким же алгоритмом как и клиент. 6) Если хеш совпал, генерируется номер сессии (с ограниченным сроком действия). Номер сессии отправляется клиенту. 7) Далее клиент отправляет запросы на сервер указывая только номер сессии. Логин и хеш более не передаются (до тех пор, пока не истечет время сессии). Либо альтернативный вариант (чуть попроще): 1) Клиент отправляет все запросы в виде двух блоков - первый блок содержит логин(или номер сессии), второй блок - содержит данные. Блок данных шифруется с использованием пароля в качестве ключа. 2) Сервер принимает блок логина, по своей базе находит пароль, и расшифровывает второй блок, используя пароль как ключ. wwworking, И кстати, почему вы решили использовать TCP? В играх обычно нужна малая латентность, а это достигается в UDP.
1
|
|
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|
| 05.06.2017, 09:56 [ТС] | |
|
Storm23, чет все сложно у вас =) придется серьёзно подумать как это провернуть, ну я хз, мне показалось что tcp будет оптимальнее =)
0
|
|
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,116
|
|
| 05.06.2017, 09:58 | |
|
wwworking, мне так кажется, что вам ещё рановато за игрушку браться. Ой как рановато.
0
|
|
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|
| 05.06.2017, 09:59 [ТС] | |
|
Usaga, волков бояться - в лес не ходить =)
0
|
|
|
|
|
| 05.06.2017, 10:14 | |
|
wwworking,
Да и еще, если уж использовать TCP, то его нужно один раз открыть и держать открытым, не закрывая. При необходимости передачи данных - передавать в потоковом режиме через уже открытый сокет.
0
|
|
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|
| 05.06.2017, 16:05 [ТС] | |
|
Storm23, ну так у меня вроде как серверный сокет и не закрывается, лишь клиентские
0
|
|
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,116
|
|
| 05.06.2017, 16:58 | |
|
wwworking, ну так соединение же вы разрываете))) Поддерживать соединение открытым можно ну очень долго, это практически бесплатно в плане ресурсов.
0
|
|
| 06.06.2017, 17:14 | |
|
wwworking, может вам пригодится книга:Для примера в книге взят язык C++ и библиотека SDL2 - для сети, но книга не об этом.
0
|
|
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|
| 13.06.2017, 15:48 [ТС] | |
|
Usaga, tcpClient.Close(); в этой строчке получается я закрываю соединение?
0
|
|
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,116
|
|
| 13.06.2017, 15:57 | |
|
wwworking, ага.
0
|
|
|
0 / 0 / 0
Регистрация: 31.05.2017
Сообщений: 33
|
|
| 14.06.2017, 14:29 [ТС] | |
|
Usaga, т.е. мне нужно убрать блок finnaly и тогда соединение с клиентом не будет разорвано со стороны сервера, и если клиент еще раз пошлет что-то на сервер то мы не будем по новой подключаться а будем уже работать с открытым подключением и в выделенным нам потоке?
0
|
|
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,116
|
|
| 14.06.2017, 14:37 | |
|
wwworking, сокет нужно "запомнить" где-нибудь во внутренней коллекции на сервере (если о нём речь) и обслуживать обмен данными через него в отдельном потоке до тех пор, пока или сервер или клиент не решат разъедениться.
0
|
|
| 14.06.2017, 14:37 | |
|
Реализовать клиент серверный проводник для просмотра файлов на компьютере По нажатию на кнопку данные из input записываются в сессию+серверный редирект на другую страницу А кто сделал движок этого форума, потому что у многих русскоязычных форумов для программистов и не только движок похожий и кто его создал? Серверный апгрейд серверный шкаф Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|