Как определить событие отключения

Возможный дубликат:
Java : Как определить закрытие удаленного сокета?

Я пишу небольшую программу с использованием Java с Socket и ServerSocket. У меня есть сервер и некоторые клиенты, когда пользователь (клиент) закрывает окно, соединение между клиентом и сервером закрывается.

Моя проблема на сервере, я не могу обнаружить это событие закрытия. Кто может мне помочь.

Я могу отправить сообщение от клиента к серверу, чтобы уведомить об этом событии перед закрытием соединения. Но если пользователь завершит процесс из диспетчера tast (javaw.exe), это решение будет невозможно.


person Võ Quang Hòa    schedule 18.05.2011    source источник


Ответы (1)


Единственный и единственно верный способ узнать это - действительно попытаться что-то записать на удаленный канал. Он вызовет соответствующее исключение, если сокет закрыт (аналогично применимо для чтения, но вместо этого он может вернуть -1)

person Suraj Chandran    schedule 18.05.2011
comment
Иногда клиент ничего не отправляет на сервер. Так что это решение, думаю, точно не сработает. - person Võ Quang Hòa; 18.05.2011
comment
@Vo, это все равно будет работать. Потому что он все равно вызовет исключение. - person Suraj Chandran; 28.05.2011