如何退出阻塞的 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.
相关文章