2016-04-30 8 views
0

ソケット例外:ピアクラッシュ対ソケットがクローズ(ローカルまたはリモート)されています。ソケット例外:ピアクラッシュ対ソケットがクローズ(ローカルまたはリモート)

私は私のコードは、条件分岐します:

  • リモートエンドポイントは、リモートソケットにclose()と呼ばれます。
  • リモートエンドポイントが異常に拡大しました。
  • 自分のコードはローカルのソケット上でclose()と呼ばれています。

時々、私はそれがreadObject()への呼び出し(関連付けられたストリーム)から再開するために私自身のSocketオブジェクトにclose()を呼び出します。これにより、SocketExceptionが発生します。

他の2つのケースはどうなりますか。彼らは私のコードが枝分かれすることができるいくつかの他のException型を投げますか?

+0

優雅な終了のために、私はポイズンピルのメッセージを送信し、もう一方の端は接続を閉じます。 –

答えて

0

少なくともあなたの意図した閉鎖のために:ちょうど、ソケットが閉じられることをリモート接続に伝えるパケット、文字列またはバイトを送信します。次に、リモートハンドラもソケットを閉じることができます。

ソケットの1つが閉じられていて、遠隔のパートナーがそれをさらに読み込もうとすると、例外が発生します(正確な例外は覚えていませんが、いずれにしても捕捉する必要があります)。リモート側のソケットを捕まえてシャットダウンすることもできます。

関連する問題