at
Март 31, 2007 13:50:41
Ситуация такая
есть многопочный сервер, от ждет от клинтов соедения, если все нормально ты вызывает функцию А, при нормальном отключении клиента вызывается функция Б.
пробелема
нужно при пропадании связи между клинтом и вервером вызывать туже функцию Б
как это можно реализовать, нужен просто алгоритм проверки живой ли клинт
slav0nic
Март 31, 2007 17:47:34
сделай как в ирц ping-pong - посылка пинг пакета, на который клиент отвечает понг подтверждением)
at
Апрель 1, 2007 16:39:50
Пасиба за идею, с самой реализвцией 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
Апрель 1, 2007 16:53:16
at
как вызвать вызывать ping_pong() если connection.recv(1024)
постоянно ждет данных останавливая выполнение
Запустить в отдельном потоке или можно использовать event-driven фреймворки типа twisted.
slav0nic
Апрель 2, 2007 09:23:59
глянь
http://www.mischiefblog.com/?p=203 , у самого ща нет времени, сорри
at
Апрель 2, 2007 11:20:00
пасиба, пасиба, спросони мне кажется что это какраз что надо )
как апрснусь буду пробывать
at
Апрель 2, 2007 11:54:57
at
When I detect that 0 bytes were read from a readable socket, assume that the socket was closed.
мдя, это несовсе то как я себе вижу, это прокатит при активной передачи данных, а уменя данные передаются 1 раз, и пока весит сокетное соеденение что то происходит на сервере, как только его нет пожеланию клиента либо по обрыву связи поток умерает