1

ソケットに対して何もアクションを実行しない場合、どうすればソケット接続を維持できるか知っていますか?接続がバックグラウンドで実行されていない場合、次のようになります。

java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at java.io.DataOutputStream.writeInt(Unknown Source)

では、アイドル時間の後に接続が失われないように、またデフォルトでどのくらいの時間が経過した後に接続が失われないように制御するにはどうすればよいですか?

4

2 に答える 2

2

この問題には一般的な解決策はありません。TCP/IP接続をリセット/閉じることを決定したリモートサーバー/サービスである可能性が非常に高いです。決定する方法と理由は、アプリケーション固有です。それを防ぐには、アプリケーション固有のソリューションが必要になります。

FWIW、SO_KEEP_ALIVEメカニズムにより、プロトコルスタックは、アイドル状態のTCP/IP接続でメッセージを交換することがあります。これは、ポートの再利用が原因でNAT接続でリセットが発生している場合に役立つことがあります。関連するJavaメソッドはSocket.setKeepAliveです。

于 2011-10-28T11:57:12.353 に答える
1

ピアによる接続リセット:ソケット書き込みエラー

これは通常、ピアによってすでに閉じられている接続への書き込みが原因で発生します。アプリケーションプロトコルエラーです。接続の有効期間について心配する前に、まずそれを調査する必要があります。

于 2011-10-29T01:08:02.767 に答える