如何在 recv 调用中实现 MSG_DONTWAIT

如何在 recv 调用中实现 MSG_DONTWAIT

我正在实现一个服务器模拟程序,想检查是否通过 recv 从 TCP/IP 套接字接收到任何内容而无需等待。当我放置 MSG_DONTWAIT 标志时,recv 返回长度 -1 和 errno“资源暂时不可用”。当使用 MSG_WAITALL 标志时,调用有效。

答案1

这不是一个错误,而是一种预期的行为。MSG_DONTWAIT 的文档指出:

如果没有可用数据,则不会阻塞,而是立即返回错误 EAGAIN。

这意味着您应该等待并处理这种情况。

查看这里供参考这里进行类似的讨论。

相关内容