2017-03-20 4 views
1

write() 메서드가 연결 시간 초과 예외를 발생시키는 원인은 무엇입니까?소켓 쓰기 throw 연결 시간 제한 예외

java.net.SocketException: Connection timed out 

    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:153) 
    at org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:126) 
    at org.apache.http.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:162) 
    at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:115) 
    at org.apache.http.entity.ByteArrayEntity.writeTo(ByteArrayEntity.java:116) 
+1

관련 코드와 모든 스택 추적을 볼 수 있습니까? 어떤 스트림 작가가 사용하고 있습니까? –

+0

우리는 apache http core의 defaultbhttpclientconnection.sendrequestent를 사용하여 요청 본문을 보내고 [코드는 여기] (https://github.com/apache/httpcore/blob/4.4.x/httpcore/src/main/java/org/apache/http /impl/DefaultBHttpClientConnection.java#L156) – skyblue

+1

연결 시간 초과는 일반적으로 서버가 응답하지 않거나 적시에 응답 함을 의미합니다. –

답변

0

예를 들어 통신이 오랫동안 발생하지 않았기 때문에 연결이 끊어졌습니다 (채널의 반대쪽 또는 반대편에서). 소켓에 keepAlives을 적용하여 해결할 수 있습니다 (필요한 경우).

대다수의 경우 - 내가 본 것부터 - 정상적인 동작 예외입니다. 네트워크 파티션이 시간에서 발생하기 때문에 (이것은 통신이 데이터 센터 및 예외에만있는 경우 문제가 될 수 있습니다. 일반적이다). 그러나 서버 - 클라이언트 (브라우저) 통신과 관련이 있다면 걱정할 필요가 없습니다.

+0

답변 해 주셔서 감사합니다. – skyblue