Найти - Пользователи
Полная версия: обрыв связи и сокеты
Начало » Network » обрыв связи и сокеты
1
at
Ситуация такая
есть многопочный сервер, от ждет от клинтов соедения, если все нормально ты вызывает функцию А, при нормальном отключении клиента вызывается функция Б.

пробелема
нужно при пропадании связи между клинтом и вервером вызывать туже функцию Б
как это можно реализовать, нужен просто алгоритм проверки живой ли клинт
slav0nic
сделай как в ирц ping-pong - посылка пинг пакета, на который клиент отвечает понг подтверждением)
at
Пасиба за идею, с самой реализвцией ping-pongа все понятно но вот где и как вызывть это функцю
порожденный поток примено такой структуры

def Client(connection,cip):
while 1:
try:
data = connection.recv(1024)
if not data: break
else:
делаем чтото с data
если все нормально то вызывам A
иначе Б
except:
вызывавем Б

было бы все нормально ели бы физический обрыв связи вызывал исключение
а так что клиетн что сервер ждут друг друга,
как вызвать вызывать ping_pong() если connection.recv(1024)
постоянно ждет данных останавливая выполнение
russian_knight
at
как вызвать вызывать ping_pong() если connection.recv(1024)
постоянно ждет данных останавливая выполнение
Запустить в отдельном потоке или можно использовать event-driven фреймворки типа twisted.
slav0nic
глянь http://www.mischiefblog.com/?p=203 , у самого ща нет времени, сорри
at
пасиба, пасиба, спросони мне кажется что это какраз что надо )
как апрснусь буду пробывать
at
at
When I detect that 0 bytes were read from a readable socket, assume that the socket was closed.
мдя, это несовсе то как я себе вижу, это прокатит при активной передачи данных, а уменя данные передаются 1 раз, и пока весит сокетное соеденение что то происходит на сервере, как только его нет пожеланию клиента либо по обрыву связи поток умерает
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB