对recv()感到困惑

时间:2010-03-02 11:15:47

标签: c sockets client recv

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

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

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

2 个答案:

答案 0 :(得分:5)

  

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

     

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

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

答案 1 :(得分:0)

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