linux - 是否可以在 linux 中重用 TCP 端口号

标签 linux apache sockets tcp

是否可以在不同进程中重用 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/

相关文章:

php - 限制文件可以下载的次数

apache - Drupal 7 背后的代理

apache - Dockerfile 找不到我的私有(private) ssh key

c++ - 无法按 NULL 字节 (\0) 拆分

java - 在java中执行linux命令并将输出存储在变量中

c++ - 如何使用 Eclipse ubuntu 设置 SDL2

不能包含这两个文件(WinSock2、Windows.h)

c++ - 发送到 : Network unreachable

c++ - 如何确定与套接字的连接是否已关闭

linux - 使用make命令安装touch Egg时