다양한 SO 답변에 대해 잘 모순되는 진술로 혼란이있는 것 같습니다. What's causing my java.net.SocketException: Connection reset?. 여기에 수용된 응답에 연결이 다른 쪽에서 닫혔다는 것을 알 수 있습니다. 하지만 이것은 사실이 아닙니다. 연결을 닫아도 연결이 재설정되지 않습니다. "기본 TCP/IP 오류"로 표시됩니다.Java : 연결 재설정의 원인에 대한 혼란 해결
내가 알고 싶은 것은 SocketException: Connection reset
이 "unerlying TCP/IP Error"외에 실제로 의미하는 것입니다. 이게 진짜 원인이야? 연결을 닫을 때 예외는 아니며 닫힌 연결을 읽는 것이 "기본 TCP/IP 오류"가 아니기 때문에 연결이 닫히는 것과 관련이 있다는 것을 의심 할 수 있습니다.
내 가설은 (의 전부 또는 단지 잘못 TCP/IP에 따라)를 지정해 SocketTimeoutException. 그리고 더 데이터가 생성되지 않은 경우에만 생성이
연결 재설정는 ACK 패킷을 확인하는 서버의 실패 원인이다 은으로 표시됩니다 (이는 특정 기간 이후에 읽는 동안 throw되고 데이터를 기다리는 동안 읽기가 ACK 패킷과 관련이 없기 때문입니다.) 즉, read()는 SocketTimeoutExceptio 할당 된 시간에 실제 데이터 (DATA LAYER)의 바이트를 읽지 않은 경우 n.
'jdk/src/solaris/native/java/net/SocketInputStream.c'에서 "Connection reset"메시지는'ECONNRESET'뿐만 아니라'EPIPE'에 의해서도 발생할 수 있습니다. – hertzsprung