2010-03-02 140 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(),它也可以讓你等待多個插座一次執行超時。