1

请原谅,如果这个问题已经得到回答,但我找不到它。

我有点困惑recv()and recvfrom()。一旦服务器绑定地址(或接受 TCP 连接),recv()就会被调用。recv()是不断检查已发送的消息还是等到收到消息?如果确实等待,等待时间是多少?

不确定我是否有道理,但如果有人能启发我,我将不胜感激。

4

2 回答 2

5

如果套接字上没有可用的消息并且O_NONBLOCK未在套接字的文件描述符上设置,则recv() 将阻塞,直到消息到达。

如果套接字上没有可用的消息并且在O_NONBLOCK套接字的文件描述符上设置,则recv() 将失败并将 errno 设置为 [ EAGAIN] 或 [ EWOULDBLOCK]。

来源:http ://www.opengroup.org/onlinepubs/009695399/functions/recv.html

于 2010-03-02T11:20:27.303 回答
0

请注意,您可以使用 select() 或 poll() 实现超时,这也可以让您一次等待多个套接字。

于 2010-03-02T16:55:12.237 回答