如果我有一个Selector
接受sockets
并将它们推送到其他线程处理的队列中,并且没有任何线程需要两分钟的套接字,并且客户端会推送数据但超时并断开连接。当一个thread
然后采取其中一个现在关闭sockets
,并试图从它读取,它会得到已由客户端发送的数据,或将没有什么在那里读?如果在读取字节之前断开连接,TCP套接字连接上的字节是否丢失?
0
A
回答
1
这取决于'切断'的含义。
- 如果您自己关闭了插座,您将从各种
read()
方法中获得SocketException: socket closed
。 - 如果连接已被对等方正常关闭,则所有挂起的数据将在流信号结束前被读取。
- 如果连接被中止重置,则所有未决数据都将丢失。
+0
好的,谢谢,我想第二个是我在服务器上看到的。你能澄清一下“流产复位”的含义吗? –
+1
有很多情况下,连接重置,而不是关闭很好:进程退出没有关闭(Windows);进程在套接字读缓冲区中仍然有未读数据时关闭套接字;主机接收已在其末尾关闭的连接数据......所有这些都会导致发出TCP RST。 – EJP
相关问题
- 1. QT套接字读取丢失字节
- 2. 套接字丢失连接
- 3. 是否为TCP套接字连接()块?
- 4. 你如何读取tcp连接上的所有字节?
- 5. TCP套接字连接
- 6. TCP套接字连接
- 7. TCP套接字和连接
- 8. 与节点的套接字断开连接
- 9. 异步套接字连接丢失
- 10. 可以在连接的套接字上读取()函数返回零字节吗?
- 11. TCP发送/接收丢失字节
- 12. 节点js中的套接字连接
- 13. 某些客户的iOS TCP套接字连接丢失
- 14. 中断连接套接字
- 15. C#:套接字问题 - 几秒钟后连接的套接字断开连接
- 16. 套接字连接和tcp连接之间的任何区别?
- 17. Flex节点套接字连接
- 18. 如何从流(tcp)套接字读取确切的字节数?
- 19. 模拟套接字断开连接
- 20. 检测套接字断开连接
- 21. 使用TCP套接字连接到节点的网站
- 22. 从Java的套接字读取字节
- 23. 通过TCP套接字的Android发送/接收字节[]通过TCP套接字
- 24. 套接字连接失败
- 25. 套接字连接失败
- 26. java tcp套接字检查客户端断开连接
- 27. 在断开连接完成之前获取套接字的房间?
- 28. AS3套接字读取套接字作为字节数组
- 29. 从套接字读取一个字节
- 30. 重新连接断开连接的客户端套接字
您无法从封闭的套接字读取数据。 – Berger