silverhawk90
@silverhawk90
Серверный Java Developer

Как корректно закрыть сокет?

Клиент:
Открываю сокет:
Socket socket = new Socket(host,port);
Пишу данные:
socket.getOutputStream().write("str");
socket.getOutputStream().flush();

Читаю данные:
response = socket.getInputStream().read();
Закрываю соединение и сокет:
socket.shutdownInput();
socket.shutdownOutput();
socket.close();


Сервер:
Socket clientSocket = serverSocket.accept();
message = clientSocket.getInputStream().read();
clientSocket.getOutputStream().write("str2");


При этом clientSocket.isConnected() true, и сервер не видит того, что клиент отсоединился. Как мне отследить что клиент отсоединился?
  • Вопрос задан
  • 3806 просмотров
Решения вопроса 1
ValdikSS
@ValdikSS
Можно читать из inputstream. Как только вам вернется пустота (пустая строка, ''), то это значит, что клиент отсоединился (это для блокирующих сокетов).
В неблокирующих сокетах вам нужно реагировать на сигнал.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы