我想知道,有没有办法接受连接而不先听它? 或者,有没有办法将侦听套接字重用为接受套接字?
答案 0 :(得分:3)
不,不。
在致电listen()
之前,套接字未进入聆听模式。它必须是为了accept()
而倾听。而且,一旦你正在听,你就无法将套接字转换为连接的套接字。你可以关闭监听套接字,并使用dup2
将连接的套接字fd“重命名”为监听套接字使用的内容 - 但我认为如果需要,你应该重新考虑你的设计。
答案 1 :(得分:0)
不,不在套接字API中。除非dup2将接受的套接字复制到监听套接字的数量,否则你会做得很好。
that is
f1 = socket
listen(f1
f2 = accept(f1
dup2(f2, f1)
close(f2)
丢弃侦听套接字并将其编号用于接受的连接。