0

壊れたパイプの例外を理解しようとしていますが、生成するのは良い考えだと思いましたが、残念ながらできませんでした。

サーバー - netcat クライアント - Java ソケット

Server ------------- Client
          <--------- SYN
  SYN,ACK --------->
          <--------- ACK
  FIN,ACK --------->        (when server dies on kill -9)
          <--------- ACK
          <--------- writes some bytes          
  RST ------------->        (no exception thrown at java side) 
  1. 終了したサーバー プロセスに書き込むときに壊れたパイプがスローされないのはなぜですか?
4

1 に答える 1

0

パイプはデータ ストリームであり、通常、データはファイルまたはネットワーク ソケットから読み取られます。このパイプが反対側から突然閉じられると、破損したパイプが発生します。ハエの場合、これは、ファイルがディスクまたは切断されたリモート ネットワークにマウントされている場合に発生する可能性があります。ネットワーク ソケットの場合、ネットワークが切断されたか、相手側のプロセスがクラッシュした場合に発生する可能性があります。

大きなファイルを読み込んでみてください。クライアントが読み込んでいる間は、ネットワーク ケーブルを抜くか、ネットワーク アダプタを無効にして、ネットワークから切り離してください。

また

サーバーをシャットダウンするだけです。

上記のいずれかの手順を手動で実行できるように、クライアントがサーバーから大きなバイト ストリームを読み取っていることを確認してください。

于 2013-05-07T14:22:12.870 に答える