Я делаю событие для отключения клиента. Вот мой код:Отправка события для закрытого сокета
public void run(){
while(isConnected()){
System.out.println("asd");
}
serverListener.clientDisconnect(clientID);
}
public boolean isConnected(){
if(socket.isClosed() || !socket.isConnected() || socket.isInputShutdown() || socket.isOutputShutdown()){
return false;
}
return true;
}
Проблема у меня есть эти результаты:
IsClosed = ложь
IsConnected = истина
IsInputShutdown = ложь
IsOutputShutdown = ложный
И когда клиент отключается, у меня такой же результат: ничего не происходит.
У вас нет способа узнать, что сокет закрыт на другом конце. Вы должны использовать тайм-аут сокета с каждой стороны. Обычно я использую тайм-аут сокета и отправляю keep-alive каждые X секунд – galchen