2011-05-11 101 views
10

SO_RCVTIMEO選項是否會影響accept(導致它如果超時返回EAGAINEWOULDBLOCK)?有沒有標準規定的行爲?我不能在文檔accept或使用選項中找到它:SO_RCVTIMEO會影響accept()嗎?

http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_10_16

+1

我似乎記得答案是沒有,但我不記得,如果背景是SO或東西我讀。史蒂文斯只提到read,readv,recv,recvfrom和recvmsg受到影響。看起來接受是否會受到選項的影響,因爲它在某些情況下會是有用的。 – Duck 2011-05-11 18:35:00

+0

另外,在3路已經完成之前,連接是否不會進入待定隊列?這將會否定這個觀點,因爲你將會返回一個新的套接字。 – Duck 2011-05-11 18:43:50

+0

我正在考慮一個阻塞套接字,並且在沒有連接嘗試時,accept的時間會被阻塞。 – 2011-05-11 18:45:34

回答

12

對POSIX SO_RCVTIMEO雖然對於「輸入功能」所定義,SO_SNDTIMEO爲「輸出功能」定義,我可以找到「輸入函數」或「輸出函數」的任何定義,所以我只是說他們至少讀/寫和寫/發送。

在Linux中的具體情況,SO_RCVTIMEO影響accept(),如可以通過看inet_csk_accept()可以看出,和SO_SND_TIMEO影響connect(),如可以通過看tcp_sendmsg()可以看出。

+1

+1有趣。感謝網站的有用鏈接。 – Duck 2011-05-12 00:26:15

+0

+1和接受,因爲似乎沒有任何東西更就此事說,除了實現細節於其他實現方式。 – 2012-02-16 01:27:22