Это только я или никто не заметил, что JavaDoc указывает метод под ServerSocket api , который позволяет нам получить логическое значение на основе закрытого состояния сокета сервера?
Вы можете просто зацикливаться каждые несколько секунд, чтобы проверить его состояние:
if(!serverSocket.isClosed()){
// whatever you want to do if the serverSocket is connected
}else{
// treat a disconnected serverSocket
}
РЕДАКТИРОВАТЬ: Просто прочитав ваш вопрос еще раз, кажется, что вам требуется, чтобы сервер просто непрерывно осуществлял поиск соединений, и если клиент отключается, он должен иметь возможность повторно обнаружить, когда клиент пытается повторно подключиться. разве это не должно быть вашим решением?
Имейте сервер, который слушает, как только он устанавливает клиентское соединение, он должен передать его объекту рабочего потока и запустить его для асинхронной работы. Тогда сервер может просто вернуться к прослушиванию новых соединений. Если клиент отключается, запущенный поток должен умереть, а при повторном подключении новый поток запускается снова для обработки нового соединения.
Jenkov предоставляет отличный пример этой реализации.