如何在不关闭套接字的情况下将FIN Flag发送到主机

时间:2014-12-06 19:52:39

标签: c linux sockets tcp posix

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

1 个答案:

答案 0 :(得分:6)

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

  

shutdown()呼叫会导致全双工连接的全部或部分内容          与sockfd关联的套接字将被关闭。如果是这样的话          SHUT_RD,不允许进一步接待。如果SHUT_WR怎么样,          将不允许进一步的传输。如果SHUT_RDWR怎么样,          将不允许进一步的招待和传播。

另见:

相关问题