接受(2)不听(2)

时间:2011-03-21 23:15:20

标签: linux sockets

我想知道,有没有办法接受连接而不先听它? 或者,有没有办法将侦听套接字重用为接受套接字?

2 个答案:

答案 0 :(得分:3)

不,不。

在致电listen()之前,套接字未进入聆听模式。它必须是为了accept()而倾听。而且,一旦你正在听,你就无法将套接字转换为连接的套接字。你可以关闭监听套接字,并使用dup2将连接的套接字fd“重命名”为监听套接字使用的内容 - 但我认为如果需要,你应该重新考虑你的设计。

答案 1 :(得分:0)

不,不在套接字API中。除非dup2将接受的套接字复制到监听套接字的数量,否则你会做得很好。

 that is

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

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