1

5秒ごとにTCPソケットに書き込み、リモートTCPポートに接続されているスレッドがあります(NIOではなくJava .netソケットを使用)。参考までに、ソケットレイヤーにタイムアウト(S0、..)を構成していませんが、デフォルト値が設定されています。リモートTCPポートに接続されているネットワークケーブルが取り外された場合、JavaスレッドはIO例外を取得せず、ソケットへの書き込みを続行します。

誰かが私にそれらの例外を受け取らない理由を教えてもらえますか?5秒ごとにソケットに書き込もうとしている間、writeメソッドはIOExceptionを通過する必要があると思います。

よろしく、ラジブ

4

1 に答える 1

1

これは、定期的にフラッシュしない場合に備えて、ソケットに書き込む量に完全に依存します。5 秒ごとに 2 バイトだけ書き込むと、バッファが自動的にいっぱいになってフラッシュされるまでにかなりの時間がかかる場合があります。例外は最終的に発生するはずです。フラッシュすると、見落としている別のネットワーク パイプ (WiFi など) が存在する可能性があり、トランスポートはそのパイプにフェールオーバーします。

于 2012-10-15T11:08:58.307 に答える