请原谅,如果这个问题已经得到回答,但我找不到它。
我有点困惑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() 实现超时,这也可以让您一次等待多个套接字。