Как определить, отключен ли клиент ServerSocket? - PullRequest
0 голосов
/ 07 ноября 2019

Мое приложение серверного типа прослушивает ServerSocket и принимает подключение от клиента. Тогда я могу читать и писать в него нормально. Я не могу понять, как определить, отключился ли клиент. Функция MySocket.isConnected () продолжает возвращать true. Точно так же isClosed () всегда возвращает false.

В других местах я читал, что способ only состоит в том, чтобы попытаться прочитать или записать его и обнаружить исключение. Это единственный способ?

1 Ответ

0 голосов
/ 11 ноября 2019

Я нашел хорошее решение моей проблемы. Вот что я сделал:

  • Я отказался от своей версии Android и перенес свой сервер на Windows.

  • В своем серверном приложении я создал дваОбъекты событий, использующие CreateEvent () .

  • Я создал два потока, по одному для каждого сокета, используя CreateThread () .

  • Каждый поток выдает блокирующее чтение на своем сокете.

  • При чтении успех каждый поток обрабатывает полученные данные. При чтении сбой (например, отключение) я установил, что его событие сигнализируется с помощью SetEvent () .

  • В приложении сервера я ждудля обоих событий используется WaitForMultipleObjects () . Если происходит какое-либо событие, я предпринимаю соответствующие соответствующие действия для отключения (сейчас я просто выхожу).

Возможно, это не ответ на мой первоначальный вопрос, но он отвечает моим требованиям.

...