2011-03-21 46 views
1

我想知道,有沒有辦法先接受連接而不先聽它?
另外,有沒有辦法重用偵聽套接字作爲接受的套接字?接受(2)不聽(2)

回答

3

不,不。

只有在您致電listen()之前,插座纔會進入偵聽模式。它必須聽取accept()。而且,一旦你在聽,你不能將套接字轉換爲連接的套接字。您可以可以關閉監聽套接字並使用dup2將連接的套接字fd「重命名」爲監聽套接字使用的內容 - 但我認爲如果您需要此設置,則應該重新考慮您的設計。

0

不,不在套接字API中。除非dup2將接受的套接字複製到監聽套接字的數目,否則你會很好。

that is 

f1 = socket 
listen(f1 
f2 = accept(f1 
dup2(f2, f1) 
close(f2) 

丟棄監聽套接字並將其編號用於接受的連接。