![]() |
|
||||||||||
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Пинг для проверки коннекта - это одно, а протокол, вернее архитектура общения клиент-сервер,это немножко другое.
Давайте определимся с терминологией... Я сам может и путаю(сь). есть 2 типа общения: 1)запрос/ответ - клиент посылает запрос и получает на него ответ 2) сообщения. - и клиент и сервер могут отправить сообщение друг другу в любой момент времени. 1 - поддерживается и http и сокетом 2 - только при установленном полнодуплексном коннекте, т.е. либо сокет, либо http-CONNECT, либо http эмуляция через пинги. 2 - это громадное и основное преимущество сокетов, экономящее трафик, ресурсы и нервы. пинги - это запрос-ответ с неким интервалом. Теперь другой аспект: Каким образом может быть организована передача данных? опять 2 варианта: 1) по состоянию (слепок мира) 2) по событиям ( дельта элементарных состояний, или, можно сказать - изменение данных Модели) 2 вариант - опять же предпочтительнее, и легче всего его реализовать с помощью сокетов, хотя можно и по http c эмуляцией постоянного коннекта через пинги: "есть чо?". 2Crenth Твой (если позволите ) вопрос состоит скорее - как отловить обрыв сокета и проследить передачу ВСЕХ данных? Это - другая задача, которая имеет больше решений чем одно (пингами) С ходу - вариант (нечто подобное использовалось в реале): 1- при отсылке/приёмке запоминаем таймстамп на клиенте и сервере (полезно также для синхронизации по-времени) 2- можно вести счетчик сообщений (отдельно для сервака, отдельно для клиента) для проверки "доходимости" пакетов, хотя это лишнее, сокет либо рвётся - либо нет. 3- отслеживаем обрыв сокета на клиенте и сервере. 4- при обрыве на клиенте пробуем приконнектится по-новой. 5- при превышении лимита таймаута на сервере (определяется по логике игры) сервер посылает пинг :"ау- ты живой" - при отрицательном ответе оканчивает сессию клиента. Всё это кажется на первый взгляд громоздким, но это десяток строчек кода максимум ![]() Добавлено через 37 часов 35 минут Цитата:
Существует мнение (не моё), что некий остаточный коннект остаётся между сервером и компом. Кто его держит не понятно, то-ли ось, то-ли браузер, а может и вообще какой маршрутизатор или фаервол.
__________________
Отряд Котовскага |
![]() |
Часовой пояс GMT +4, время: 21:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|