Форум сайта python.su
Ситуация такая
есть многопочный сервер, от ждет от клинтов соедения, если все нормально ты вызывает функцию А, при нормальном отключении клиента вызывается функция Б.
пробелема
нужно при пропадании связи между клинтом и вервером вызывать туже функцию Б
как это можно реализовать, нужен просто алгоритм проверки живой ли клинт
Офлайн
сделай как в ирц ping-pong - посылка пинг пакета, на который клиент отвечает понг подтверждением)
Офлайн
Пасиба за идею, с самой реализвцией 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)
постоянно ждет данных останавливая выполнение
Офлайн
atЗапустить в отдельном потоке или можно использовать event-driven фреймворки типа twisted.
как вызвать вызывать ping_pong() если connection.recv(1024)
постоянно ждет данных останавливая выполнение
Офлайн
глянь http://www.mischiefblog.com/?p=203 , у самого ща нет времени, сорри
Офлайн
пасиба, пасиба, спросони мне кажется что это какраз что надо )
как апрснусь буду пробывать
Офлайн
atмдя, это несовсе то как я себе вижу, это прокатит при активной передачи данных, а уменя данные передаются 1 раз, и пока весит сокетное соеденение что то происходит на сервере, как только его нет пожеланию клиента либо по обрыву связи поток умерает
When I detect that 0 bytes were read from a readable socket, assume that the socket was closed.
Офлайн