Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Как определить дисконнект клиента


Автор: Black_Wolf 8.10.2008, 12:16
Доброго времени суток.
Пишу серверную часть приложения, используя TcpListener и TcpClient. Но возникла небольшая проблема. На серверной стороне нужно отловить момент дисконекта клиента. Ни где на форуме вариантов решения не нашел, в msdn тоже (наверно плохо искал). Есть вариант использовать таймер для определения времени простоя, и закрывать соединение принудительно по истечении определенного времени. Может кто-нибудь посоветует вариант получше?

Автор: SpaceSpace 27.10.2008, 08:49
Пробуешь клиенту что-то передать и ловиш ексепшн)

Автор: Black_Wolf 28.10.2008, 06:16
SpaceSpace
Дело в том что в качестве клиента выступает Telnet. Нужно поймать то событие когда окно телнет просто закрывают.
Или меня глючит smile  или мистика smile , но сервер стал определять этот момент при чтении из потока NetworkStream.
Конструкция
Код

while(i = streamClient->Read(buff, 0, buff->Length)){

}

заработала. При неожиданном отключении клиента мы вываливаемся из цикла.

Автор: SpaceSpace 28.10.2008, 07:50
гм. ну и в чем вопрос? ты вывалился из цикла по исключению,  ты его поймал, обработал, все на этом работа закончена.

Автор: Black_Wolf 30.10.2008, 13:48
SpaceSpace
Вывалился именно не по исключению, а по значению 0, которое вернула функция Read(buff, 0, buff->Length)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)