是否可以在不同进程中重用 linux 中的监听 TCP 端口?
例如:进程 A 和进程 B 正在监听 server=INADDR_ANY 和 port=10000
如果不可能,那么 apache http 服务器如何能够在不同的进程中监听端口 #80。
提前致谢
最佳答案
可以让多个进程监听同一个端口,但如您所见,无论是否使用 SO_REUSEADDR
,您都无法使用不同的套接字来做到这一点。
安排这个的唯一方法是创建套接字,bind()
它并调用 listen()
,然后复制它。您可以通过以下方式复制套接字:
- 调用
fork()
- 两个子进程都将继承监听套接字。这就是 Apache 所做的;或 - 使用
SCM_RIGHTS
消息通过 UNIX 域套接字连接向监听套接字发送句柄。
关于linux - 是否可以在 linux 中重用 TCP 端口号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960574/