如果在读取字节之前断开连接,TCP套接字连接上的字节是否会丢失?

时间:2016-04-28 08:55:16

标签: java sockets nio

如果我有Selector接受sockets并将其推送到队列以供其他线程处理,并且没有线程占用套接字,比如两分钟,客户端会推送数据但是然后超时和断开连接。当thread接受其中一个现在已关闭sockets并尝试从中读取时,它是否会获取客户已发送的数据,或者没有任何内容可供阅读?

1 个答案:

答案 0 :(得分:1)

这取决于切断的'装置

  • 如果您自己关闭套接字,则会从各种SocketException: socket closed方法获得read()
  • 如果对等方正常关闭连接,则在发出流结束信号之前将读取所有待处理数据。
  • 如果连接被中止重置,则所有待处理数据都将丢失。