【问题标题】:Linux Socket - Clear the flag set by shutdown() systemcallLinux Socket - 清除由 shutdown() 系统调用设置的标志
【发布时间】:2021-10-27 10:27:25
【问题描述】:

如何清除Linux socket程序中shutdown()系统调用设置的标志?

我想通过shutdown(sockfd, SHUT_WR) 调用启用对现在锁定写入的套接字的写入。

【问题讨论】:

  • shutdown 不仅仅是设置一个标志来阻止套接字的特定功能;顾名思义,它会关闭连接的那一部分。

标签: c linux sockets tcp


【解决方案1】:

很遗憾,你问的问题是不可能的。

发出shutdown( sockfd, SHUT_WR );,实际上是强制发送FIN数据包。

查看 TCP 状态机:

如您所见,当FIN 数据包从活动套接字(状态ESTABLISHED)发送时,状态CLOSE_WAIT 达到,这是一个无法“撤消”的转换 em> 以任何方式。

所以这不是“删除标志”的问题:套接字设置为导致其关闭的不可逆路径,只等待最后一个ACK完成其“生命” ”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多