STLEON
@STLEON
In Console We Trust. Code hard. Or die.

Как проверять, что клиент отвалился?

Пишу свой UDP-сервер на Python, клиентов будет очень много, желательно определять, кто из них отключился, чтобы не слать им сообщения.

Следовательно, вопрос, как это сделать (меня интересует сам алгоритм)?

Я пока вижу так: клиент отсылает серверу сообщения, вроде "я онлайн", сервер же отключает тех клиентов, время ожидания от которых прошло. Тогда какой интервал отправки сообщений выбрать? Но из этого может получится неплохой ddos сервера.

Сейчас придумал другой способ - ведется активность клиентов, если она меньше выбранного интервала времени, то сервер сам посылает сообщение клиенту ("ты онлайн?"). Если клиент не отвечает, то сервер его удаляет из списка.

Уверен, что у Вас есть еще какие-нибудь идеи по этому поводу.

Спасибо!
  • Вопрос задан
  • 2596 просмотров
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Если Вы используете UDP - значит вам доставка не важна.
Иначе - использовали бы TCP.
А так - стандарт телефонии)) Два порта: один - голос (UDP), другой - сигналка (TCP).
Вот по сигналке и гоняйте пинги, а UDP - отправили и забыли.
Ответ написан
@s1dney
Да, человек выше все правильно сказала - через UDP keepalive поддерживать дело неблагодарное, используйте еще один сокет tcp для контроля. А может быть и просто отказаться от UDP.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы