Форум: "Сети";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
ВнизОшибка на сокете Найти похожие ветки
← →
Leviathan (2001-12-10 22:29) [0]Привет! Скажем, произошла на сокете ошибка, было три клиента, один нелегально отпал (завис, например). Как это обработать? OnDisconnect, естественно, не происходит. И будет ли продолжать за сокетом числиться этот номер коннекшна?
← →
Digitman (2001-12-11 13:27) [1]При использовании логики, "прошитой" в TServerSocket такая ситуация не может быть определена сервером, и кл.соединение будет считаться активным неопределенное время.
А вообще такие ситуации могут спокойно обрабатываться, если программировать гнездовые соединения на уровне API. При этом можно будет задать зн-е таймаута, в теч.которого клиент обязан "подать голос" и по истечении которого (при возникновении события, связанного с превышением тайм-аута) сервер просто принудительно откулючает клиента как "зависшего", не подающего "признаки жизни"
← →
Polevi (2001-12-11 15:01) [2]Придется хранить для каждого сокета значение LastActive, периодически опрашивать все сокеты и отключать те, для которых Now-LastActive>SomeInterval
← →
Digitman (2001-12-11 15:43) [3]>Leviathan
Логику, упомянутую <Polevi>, принято определять термином "Keep Alive" (по-русски примерно интерпретируемую как механизм периодического извещения взаимодействующих друг с другом процессов о том , что каждый из них "жив" и способен реагировать на последующие сообщения партнера по коннекту). Программная реализация механизма "Keep Alive" на уровне приложений, конечно же, усложняет протокол информационного взаимодействия в распределенных системах, но в ряде случаев оправдан (ICQ!!!). Программная реализация того же механизма на уровне Winsock тоже существует, но не может быть задействована при использовании "жестко прошитых" классов TServerSocket и TClientSocket.
← →
Leviathan (2001-12-11 19:51) [4]Большое спасибо всем за помощь!
Polevi:
Я правильно понял что умерший клиент продолжает числиться как здоровый коннекшн, и только после его отключения список коннекшнов "сдвинется вниз"? Если да, то почему бы вместо периодического опроса не проводить такой опрос в OnError? Возможно это?
← →
Digitman (2001-12-13 07:53) [5]OnError в такой ситуации никогда не возникнет.
← →
Polevi (2001-12-14 15:22) [6]>продолжает числиться как здоровый коннекшн
раз конекшн "здоровый" - откуда OnError?
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c