请原谅,如果这个问题已经得到回答,但我找不到它。
我有点困惑recv()
and recvfrom()
。一旦服务器绑定地址(或接受 TCP 连接),recv()
就会被调用。recv()
是不断检查已发送的消息还是等到收到消息?如果确实等待,等待时间是多少?
不确定我是否有道理,但如果有人能启发我,我将不胜感激。
如果套接字上没有可用的消息并且
O_NONBLOCK
未在套接字的文件描述符上设置,则recv
() 将阻塞,直到消息到达。如果套接字上没有可用的消息并且在
O_NONBLOCK
套接字的文件描述符上设置,则recv
() 将失败并将 errno 设置为 [EAGAIN
] 或 [EWOULDBLOCK
]。
来源:http ://www.opengroup.org/onlinepubs/009695399/functions/recv.html
请注意,您可以使用 select() 或 poll() 实现超时,这也可以让您一次等待多个套接字。