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