How to exit a blocking recv() call?(如何退出阻塞的 recv() 调用?)

本文介绍了如何退出阻塞的 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.

这篇关于如何退出阻塞的 recv() 调用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!