如何退出阻塞的 recv() 调用?

基于此问题,当您调用 closesocket()recv() 已经使用的套接字上,然后 RST 数据包将被发送到另一端,而不是执行正常的断开连接 (4-方式握手).

Based on this question, when you call closesocket() on a socket that recv() is already using, then an RST packet will be sent to the other side instead of performing a graceful disconnection (4-way handshake).

但我希望执行一个优雅的断开连接,所以我需要在调用 closesocket() 之前退出 recv().

But I wish to perform a graceful disconnection, so I need to exit recv() before calling closesocket().

有没有办法做到这一点?

Is there a way to do that?

推荐答案

您可以shutdown() 用于输入的套接字.recv() 将解除阻塞并返回零,每个人都会很高兴.

You can shutdown() the socket for input. The recv() will unblock and return zero and everybody will be happy.

相关文章