4

Windows socket close(closesocket) 函数生成RST。

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

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

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

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

4

2 回答 2

2

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

  1. 当套接字接收缓冲区中有未读数据挂起时调用它。
  2. 在将 SO_LINGER 选项设置为 'on' 且超时时间为零后调用它。
于 2018-03-08T00:21:50.637 回答
0

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

例如:关机(clisocket,SD_BOTH);

于 2019-02-19T04:37:25.930 回答