У меня проблемы с Java-сокетами. У меня есть пара приложений, которые устанавливают связь между ними (один открывается ServerSocket
, вызывает accept()
и ждет, и другие подключаются через Socket(InetAddress,int)
конструктора.Detect Socket закрывается после принудительного закрытия приложения.
После установления соединения, сокет Thread
создается с этим Runnable
.
public void run() {
System.out.print("Watching Socket for closing ");
while(running) {
if(socket.isClosed()) {
System.out.println("Socket has been closed");
break;
}
}
this.running = false;
//safely ends this application by closing i/o and exiting.
}
Моя проблема заключается в том, что, когда один из приложений неожиданно закрыто (в моем случае прекращено из Затмения), призывающую Socket.isClosed()
все еще показывает сокет открыт, и поэтому цикл продолжает работать, как если сокет был открыт .
Как определить, когда сокет закрыт, когда приложение Java с другой стороны принудительно завершено?
Получаете ли вы IOException во время чтения? – ucsunil
Нет, я еще не добавил ничего, что читает и пишет. –