Вопрос касательно соединения TCP принудительно выключен - PullRequest
0 голосов
/ 15 апреля 2010

Я разрабатываю приложение Client Server Chat на Java, которое использует TCP-соединение между ними. Я не могу понять, как обнаружить на стороне сервера, когда клиент принудительно закрывается. Мне это нужно, поскольку я веду список онлайн-клиентов и мне нужно удалить пользователя из списка, когда он принудительно закрывает соединение.

Любая помощь будет высоко оценена.

Спасибо

Тара Сингх

Ответы [ 3 ]

2 голосов
/ 15 апреля 2010

Одним из способов своевременного получения уведомления о разрыве соединения является попытка посылать небольшие фрагменты информации через регулярные промежутки времени. Тогда самое последнее, что вы узнаете об отключении клиента, - это максимум ваш интервал. Люди называют это сердцебиением.

1 голос
/ 15 апреля 2010

Предполагая, что ваш сервер использует java.net.Socket, вы можете время от времени запрашивать сокет, он предоставляет методы isClosed () и isConnected ().

0 голосов
/ 15 апреля 2010

Это зависит от того, как вы обрабатываете свой сокет ввода / вывода

Например, если вы используете селектор (java.nio) для выполнения неблокирующих операций ввода-вывода для набора сокетов, вы узнаете о любых разъединениях при следующем вызове select ().

Может быть, если вы обновили свой вопрос о том, как вы обрабатываете сокеты?

...