winsock生成重置(RST)的tcp closesocket方法

时间:2018-03-07 22:41:45

标签: tcp winsock closesocket

Windows套接字关闭(closesocket)函数生成RST。

在Linux上,当我调用close函数来关闭一个tcp套接字时,它从两个客户端服务器通过fin / ack并且套接字被关闭。

但是在windows winsock上,每当我调用closesocket时,它总会生成RST消息。

我尝试使用关机调用。它正在产生FIN。但最后我必须调用closesocket并发送RST。

有没有办法调用closesocket来释放套接字资源而不发送RST消息。

2 个答案:

答案 0 :(得分:1)

有几件事可能导致closesocket()发送RST而不是FIN:

  1. 当套接字接收缓冲区中有未读数据待处理时调用它。
  2. 将SO_LINGER选项设置为“on”且超时为零后调用它。

答案 1 :(得分:0)

如果没有更多数据要发送和/或接收,则可以使用“ shutdown()”。

例如:shutdown(clisocket,SD_BOTH);