1

ServerSocketJava でandを使用して、自分ObjectOuputStreamのプロジェクトのオブジェクトをクライアントからサーバーに転送しています。Javaのクラスは TCP を使用するため、パケットがドロップされないことは理解してServerSocketいますが、オブジェクトのストリーミング中にクライアントがクラッシュした場合はどうなりますか? これを自分で処理する必要がありますか?それとも、Java はストリームを介して入ってくるオブジェクトが不完全であることを認識しますか?

4

2 に答える 2

2

接続が切断される方法によっては、サーバーでいくつかの例外のいずれかが発生する可能性があります。サーバーが などの例外で文句を言う場合がありますConnection reset by peer。はい、コンテナは接続が正しく終了しなかったことを認識できます。コンテナーによってスローされた例外は、これを示します。

クライアントがオブジェクトを完全に転送しても、サーバーがそれを取得できない場合があることに注意してください。2 つの間に位置するロード バランサーは、未知の理由で接続を切断する可能性があります。それらのケースも考慮してください。

于 2012-10-28T14:03:32.023 に答える
0

ServerSocket は中断されません。Socket に送信されているデータが中断されました。ObjectInputStream.readObject() メソッドは、障害モードに応じて、IOException をスローするか、永久にブロックする可能性があります。後者を回避するには、ソケットに読み取りタイムアウトを設定します。次に、SocketTimeoutException をスローします。

于 2012-10-28T21:13:11.420 に答える