Показать сообщение отдельно
Старый 27.04.2010, 21:42
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 10  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Пинг для проверки коннекта - это одно, а протокол, вернее архитектура общения клиент-сервер,это немножко другое.
Давайте определимся с терминологией...
Я сам может и путаю(сь).
есть 2 типа общения:
1)запрос/ответ - клиент посылает запрос и получает на него ответ
2) сообщения. - и клиент и сервер могут отправить сообщение друг другу в любой момент времени.
1 - поддерживается и http и сокетом
2 - только при установленном полнодуплексном коннекте, т.е. либо сокет, либо http-CONNECT, либо http эмуляция через пинги.
2 - это громадное и основное преимущество сокетов, экономящее трафик, ресурсы и нервы.
пинги - это запрос-ответ с неким интервалом.

Теперь другой аспект: Каким образом может быть организована передача данных?
опять 2 варианта:
1) по состоянию (слепок мира)
2) по событиям ( дельта элементарных состояний, или, можно сказать - изменение данных Модели)

2 вариант - опять же предпочтительнее, и легче всего его реализовать с помощью сокетов, хотя можно и по http c эмуляцией постоянного коннекта через пинги: "есть чо?".

2Crenth
Твой (если позволите ) вопрос состоит скорее - как отловить обрыв сокета и проследить передачу ВСЕХ данных?
Это - другая задача, которая имеет больше решений чем одно (пингами)
С ходу - вариант (нечто подобное использовалось в реале):

1- при отсылке/приёмке запоминаем таймстамп на клиенте и сервере (полезно также для синхронизации по-времени)
2- можно вести счетчик сообщений (отдельно для сервака, отдельно для клиента) для проверки "доходимости" пакетов, хотя это лишнее, сокет либо рвётся - либо нет.
3- отслеживаем обрыв сокета на клиенте и сервере.
4- при обрыве на клиенте пробуем приконнектится по-новой.
5- при превышении лимита таймаута на сервере (определяется по логике игры) сервер посылает пинг :"ау- ты живой" - при отрицательном ответе оканчивает сессию клиента.

Всё это кажется на первый взгляд громоздким, но это десяток строчек кода максимум

Добавлено через 37 часов 35 минут
Цитата:
Сообщение от Crenth Посмотреть сообщение
я немного в теме сокетов. и тоже сталкивался со странными отваливаниями. но как ни странно, что странно , в таких случаях у меня на ФП смерть сокета сразу выявляется, а не сервере - не всегда.
Я поэтому и говорил о сервер<-> браузер <-> флэшплеер, а не сервер<->флэшплеер.
Существует мнение (не моё), что некий остаточный коннект остаётся между сервером и компом.
Кто его держит не понятно, то-ли ось, то-ли браузер, а может и вообще какой маршрутизатор или фаервол.
__________________
Отряд Котовскага