2010-03-02 105 views
1

如果已经回答了这个问题,但我找不到它。困惑于recv()

我有点糊涂recv()recvfrom()。一旦服务器绑定地址(或接受TCP连接),recv()被调用。 recv()是否经常检查已发送的邮件或等待收到邮件?如果确实等待,等待时间有多长?

不知道我是否有道理,但如果有人能启发我,我会很感激。

回答

5

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

如果可能没有消息在插座和O_NONBLOCK被设置在套接字的文件描述符,recv()失败,将errno设置为[EAGAIN]或[EWOULDBLOCK

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

+0

谢谢,我以为我彻底阅读,但显然不够。 – 2010-03-02 11:45:17

0

注意,您可以使用select()或poll(),它也可以让你等待多个插座一次执行超时。