【问题标题】:How to send FIN Flag to host without closing socket如何在不关闭套接字的情况下向主机发送 FIN 标志
【发布时间】:2015-02-04 19:08:01
【问题描述】:

我编写了一个创建套接字的 C 代码,到目前为止它工作正常。 在 TCP 的 RFC 中,我发现可以发送一个 FIN 标志来告诉其他主机我想退出或对话。 FIN 标志并不意味着其他主机无法发送更多数据。因此,在一个完美的世界中,我会发送 FIN 标志,而另一个主机知道我不想再说话了,他会发送其余的数据并在那之后关闭。 但是我怎样才能发送 FIN ??? close() 函数对我来说是这样做的,或者更好地设置 linux 内核在他存放资源时所做的事情。 但是收起资源意味着我不能再使用 recv() 函数,因为当我调用 close() 函数时,文件描述符被内核收起。 那么如何读取其他主机在我的 FIN 标志之后可能想要发送的其余数据。 我敢打赌有一个干净的解决方案

【问题讨论】:

    标签: c linux sockets tcp posix


    【解决方案1】:

    您想使用shutdown(s, SHUT_WR) 关闭套接字的写入端。

    shutdown() 调用会导致全部或部分全双工连接 要关闭与 sockfd 关联的套接字。如果怎么样 SHUT_RD,将不允许进一步接收。如果SHUT_WR怎么样, 进一步的传输将被禁止。如果SHUT_RDWR怎么样, 进一步的接收和传输将被禁止。

    另见:

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 2013-12-10
      • 2014-12-15
      • 2012-04-06
      • 2015-07-19
      • 2016-07-13
      • 2013-10-04
      • 2011-05-20
      • 2011-04-15
      相关资源
      最近更新 更多