2017-03-20 20 views
1

write()メソッドが接続タイムアウト例外をスローする原因は何ですか?ソケット書き込みのスロー接続タイムアウト例外の原因

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コアのdefaultbhttpclientconnection.sendrequestentを使用してリクエスト本文を送信します([code here](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

関連する問題