【问题标题】:What happens when shutdown socket with SD_RECEIVE, but peer sends packet? (winsock)当使用 SD_RECEIVE 关闭套接字但对等方发送数据包时会发生什么? (温索克)
【发布时间】:2016-07-22 06:11:55
【问题描述】:

假设我将 winsock 的 shutdown(s, SD_RECEIVE) 用于 TCP。
关闭后,对端发送数据包时会发生什么。

根据 MSDN,
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740481.aspx

对于 TCP 套接字,如果套接字上仍有等待接收的数据,或者数据随后到达,则重置连接,因为无法将数据传递给用户。

“reset”是否意味着本地 TCP 向对端发送 RST?这又意味着,不会有正常的关机?

【问题讨论】:

    标签: c sockets tcp


    【解决方案1】:

    这就是它的意思,但仅限于 Windows。在 UNIX 上,数据包被确认并被丢弃。在 Linux 上,它们被确认和缓冲,这最终会使发送者停止。

    【讨论】:

    • 谢谢,您有什么参考资料可以让您阅读更多吗?
    • 这是我在写E.J.的时候自己测试的结果。 Pitt,Java 基础网络, Springer-Verlag。
    • 太棒了。谢谢你的参考!我还有一个问题。在上面的引用中,它还说“如果套接字上仍有数据排队等待接收”。这样,是否意味着无论对等点做什么,都将 RST 发送给它的对等点?
    • 如果套接字接收缓冲区中已有数据,则无论如何都会发出 RST。如果没有,并且数据随后到达,则发出 RST。
    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多