Для прослушивания новых соединений сокетов вы должны использовать:
ServerSocket server = new ServerSocket(PORT);
Socket client = server.accept();
Вы используете это в своем основном методе вне любого вида l oop, поэтому, если клиент закрывает соединение, сервер не будет прослушивайте новые соединения, если только вы не запустите эту часть кода (поэтому сервер должен быть перезапущен).
Если вы не хотите перезапускать сервер, вы можете создать метод, который прослушивает новый сокет, а затем вызывайте его, если клиент закрывает текущее соединение с сокетом.
public Socket waitForClient(ServerSocket server) {
return server.accept();
}
Чтобы проверить, был ли сокет закрыт, вы можете использовать read() == -1
или readLine == null
, если клиент закрыл сокет с помощью метода close () , Если нет, вы также можете определить, закрыто ли оно, поймав IOException
. См. этот пост для получения дополнительной информации.