2011-03-21 27 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) 

丢弃监听套接字并将其编号用于接受的连接。