Я пишу основную сервер-клиентскую программу на Java и пытаюсь обработать случай, когда клиент неожиданно завершает работу.
public void run() {
while(alive) {
try {
// socketIn is a BufferedReader wrapped around the socket's InputStream.
String input = socketIn.readLine();
if(input == null)
continue;
String response = processInput(input);
// socketOut is a PrintWriter wrapped around the socket's OutputStream.
if(response != null) {
socketOut.println(response);
socketOut.flush();
}
} catch(IOException e) {
System.out.println("TRACE 1");
alive = false;
}
}
System.out.println("TRACE 2");
}
Но когда я убиваю клиента, цикл продолжает идти, и ни TRACE не распечатывается. Я предполагаю, что когда сокет закрывается с другого конца, и я пытаюсь прочитать с него, он выдаст IOException.
Это было плохое предположение? Что я могу сделать, чтобы это исправить?