我希望能够在不阻塞的情况下调用recv(),因此我希望使其成为非阻塞的,但是我不希望它在发送数据时成为非阻塞的。那么是否可以仅针对recv()函数将套接字设为非阻塞,还是阻塞/非阻塞模式会影响所有套接字函数?

最佳答案

对于Windows,可以使用 ioctlsocket() 将套接字设置为非阻塞模式。不幸的是,这些设置适用于套接字上的所有操作。因此,对于您的情况,您必须在接收和发送之间进行切换。

用于记录:
对于linux,您可以在 MSG_DONTWAIT 调用参数中使用recv()标志。这样,单个调用将成为非阻塞。

关于c++ - 是否可以使套接字仅对recv()函数无阻塞?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28636286/

10-13 08:16