Java에서 기본 서버 - 클라이언트 프로그램을 작성 중이며 클라이언트가 예기치 않게 종료되는 경우를 처리하려고합니다.소켓 닫히지 않음 IOException
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이 발생합니다.
이것은 잘못된 가정입니까? 이 문제를 해결하려면 어떻게해야합니까?
연결 시간 초과를 고려하고 SocketExceptions도 고려하십시오. – Zaki
연결 시간 초과는 좋은 생각이며 SocketException은 IOException의 하위 클래스라고 생각합니다. – DanielGibbs