0
클라이언트 :소켓을 올바르게 닫는 방법?
열기 소켓 :
Socket socket = new Socket(host,port);
데이터 쓰기 :
socket.getOutputStream().write("str");
socket.getOutputStream().flush();
데이터 읽기 :
response = socket.getInputStream().read();
닫기 연결 및 소켓 :
socket.shutdownInput();
socket.shutdownOutput();
socket.close();
는 서버 :
Socket clientSocket = serverSocket.accept();
message = clientSocket.getInputStream().read();
clientSocket.getOutputStream().write("str2");
clientSocket.isConnected()가 true를 반환하고, 서버는 클라이언트가 연결되어 있음을 볼 수 없습니다. 클라이언트의 연결이 끊어 졌음을 감지하는 방법은 무엇입니까?
가 난 이것을 사용하려고 :
try {
while (true) {
message = clientSocket.getInputStream().read();
clientSocket.getOutputStream().write("str2");
}
} catch (IOException e) {
clientSocket.close();
}
을하지만 그것은 작동하지 않습니다.
[관련] (http://stackoverflow.com/questions/155243/why-is-it-impossible-without-attempting-io-to-detect-that-tcp-socket-was-grac?lq = 1) [질문] (또는 http://stackoverflow.com/questions/151590/java-how-to-detect-a-remote-side-socket-close) 그 소켓을 감지하는 방법을 논의했다 (또는 실제로 왜 신뢰성있게 검출 할 수는 없다). –