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 回答