Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.06.2009, 01:11
avilov вне форума Посмотреть профиль Отправить личное сообщение для avilov Найти все сообщения от avilov
  № 1  
Ответить с цитированием
avilov
[+1 31.01.11]

Регистрация: Jun 2008
Сообщений: 91
По умолчанию Отловить disconnect клиента на сервере !

Всем привет !

Много видел в темах что советуют для написания онлаин игр писать свой сервер на
c++

Я написал всой socket сервер на с++ , но тут появилась проблема как отловить на стороне сервера что клиент отключился например (отключился нет у клиента или еще что - то , порыв связи) вобщем разумного решения этой проблеме я не нашел !

Может кто сталкивался с такой проблемой ?

Старый 24.06.2009, 03:23
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 2  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
Можно сверять время приема последнего пакета от клиента и текущее время на сервере. Если разница между ними большего некоего допустимого времени ожидания ответа от клиента сервером, то клиент считается неактивным.
__________________
:emocry:

Старый 24.06.2009, 04:14
avilov вне форума Посмотреть профиль Отправить личное сообщение для avilov Найти все сообщения от avilov
  № 3  
Ответить с цитированием
avilov
[+1 31.01.11]

Регистрация: Jun 2008
Сообщений: 91
Цитата:
Сообщение от lowka Посмотреть сообщение
Можно сверять время приема последнего пакета от клиента и текущее время на сервере. Если разница между ними большего некоего допустимого времени ожидания ответа от клиента сервером, то клиент считается неактивным.
Как я понял - принцып таков , клиент например каждые 5 сек посылает сообщение - а я на сервере отлавливаю их и если в течении 5 сер например нет сообщения от клиента - клиент считается не активным .

Впринцыпи идея - нада все обдумать !

Если у кого будут еще предложения прошу высказыватся - или может уже кто на приктике реализовывал !

Добавлено через 33 часа 3 минуты
Вопрос еще актуален , кто еще как реализовывал подобную проблему ?

Старый 25.06.2009, 14:11
Foli вне форума Посмотреть профиль Отправить личное сообщение для Foli Найти все сообщения от Foli
  № 4  
Ответить с цитированием
Foli
[+1 04.05.08]

Регистрация: May 2008
Адрес: Czech, Prague
Сообщений: 65
Цитата:
Сообщение от lowka Посмотреть сообщение
Можно сверять время приема последнего пакета от клиента и текущее время на сервере. Если разница между ними большего некоего допустимого времени ожидания ответа от клиента сервером, то клиент считается неактивным.
В точку! Других решений нет!!!

Старый 29.06.2009, 04:27
IDmitry вне форума Посмотреть профиль Найти все сообщения от IDmitry
  № 5  
Ответить с цитированием
IDmitry
Banned

Регистрация: Jun 2009
Сообщений: 9
Ну да, конечно ...
А как же Comet-технология? Неплохо реализована в Tomcat 6, правда, до 16-ой версии были глюки с NIO, потом исправили (юзаю сейчас 19 релиз - все пучком).

Если рассматривать в данном контексте, то мгновенно реагирует не только на ошибку, но даже распознает дисконнект - таймаут, принудительный разрыв, истечение сессии, перезагрузка клиента ... Мгновенно реагирует не только сервер, но и клиент. На клиенте, естественно, никаких таймеров или допзапросов - нужен только изначальный коннект.

Старый 30.06.2009, 00:18
avilov вне форума Посмотреть профиль Отправить личное сообщение для avilov Найти все сообщения от avilov
  № 6  
Ответить с цитированием
avilov
[+1 31.01.11]

Регистрация: Jun 2008
Сообщений: 91
Цитата:
Сообщение от IDmitry Посмотреть сообщение
Ну да, конечно ...
А как же Comet-технология? Неплохо реализована в Tomcat 6, правда, до 16-ой версии были глюки с NIO, потом исправили (юзаю сейчас 19 релиз - все пучком).

Если рассматривать в данном контексте, то мгновенно реагирует не только на ошибку, но даже распознает дисконнект - таймаут, принудительный разрыв, истечение сессии, перезагрузка клиента ... Мгновенно реагирует не только сервер, но и клиент. На клиенте, естественно, никаких таймеров или допзапросов - нужен только изначальный коннект.

Спасибо !

Но я реализовал как предложил lowka - тестировал все работает как часы , может после будут проблемы - но пока нет !

Comet-технология я думаю тоже так реализована - но может и нет !

Старый 30.06.2009, 18:44
Foli вне форума Посмотреть профиль Отправить личное сообщение для Foli Найти все сообщения от Foli
  № 7  
Ответить с цитированием
Foli
[+1 04.05.08]

Регистрация: May 2008
Адрес: Czech, Prague
Сообщений: 65
Цитата:
Сообщение от IDmitry Посмотреть сообщение
Ну да, конечно ...
А как же Comet-технология?
Смотря для чего использовать Comet.
Больше того, он работает по схожему принципу. Вам знакомо понятие датаграма?
Понятно что всё обернули красиво но что делать если число пользователей превысит 2байта допустимых открытых соединений?

Или что делать в ситуации когда например у вас отключат свет в доме и на крыше потухнет свитч? Сервер подумает что клиента нет! А что будет если соединение восстановится? Сервер по прежнему будет думать что клиент мёртв! Ибо, коннект нужно инициировать первым клиенту

Короче, технология интересная но использовать нужно выборочно.


Последний раз редактировалось Foli; 30.06.2009 в 19:51.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.