【发布时间】:2015-04-22 13:31:06
【问题描述】:
我希望能够在不必阻塞的情况下调用recv(),所以我想让它成为非阻塞的,但我不希望它在发送数据时是非阻塞的。那么是否可以只为recv() 函数将套接字设为非阻塞,或者阻塞/非阻塞模式会影响所有套接字函数?
【问题讨论】:
-
您可以使用
MSG_PEEK标志来查看是否有要接收的内容。或使用例如select超时为零。但是,对于 TCP 套接字,这些方法只能告诉您至少有 一个 字节要接收,您不知道实际可用的字节数。 -
是的,但最后我检查了 recv() 如果有 1 个字节的数据就不会阻塞。
-
@Joachim Pileborg 但即使我使用了
MSG_PEEK,recv()仍然会阻塞。