首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在linux中重用TCP端口号

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

Stack Overflow用户
提问于 2011-05-11 15:14:51
回答 3查看 3.8K关注 0票数 2

是否可以在不同的进程中重用linux中的侦听TCP端口?

例如:进程A和进程B正在监听server=INADDR_ANY和port=10000

如果不可能,那么apache http服务器如何能够在不同的进程中侦听端口#80。

提前感谢

EN

回答 3

Stack Overflow用户

发布于 2011-05-17 15:34:27

可以让多个进程监听同一端口,但正如您已经看到的,无论是否使用SO_REUSEADDR,都不能使用不同的套接字来实现这一点。

安排此操作的唯一方法是创建套接字,对其执行bind()并调用listen(),然后复制它。您可以通过以下方式复制套接字:

  • 调用fork() -两个子进程都将继承侦听套接字。这就是Apache所做的;或者
  • 使用SCM_RIGHTS消息通过UNIX域套接字连接发送到侦听套接字的句柄。
票数 1
EN

Stack Overflow用户

发布于 2011-05-11 15:20:53

Apache派生子进程,子进程继承文件描述符。但是这些子进程实际上并没有监听服务器端口(80),而是在连接建立后打开的不同端口上执行与客户端的交互。

%2进程无法侦听%1 TCP端口。他们将如何共享传入的数据?

票数 0
EN

Stack Overflow用户

发布于 2011-05-11 15:36:35

2个进程可以监听同一端口。它们都会调用accept,并且只有一个会在第一个客户端返回accept。

您可以打开端口,派生100个子节点,并让它们同时接受(套接字)所有连接,它们将平等地接收新连接,每个连接一个,显然永远不会相同。

如果您希望从不相关的进程执行此操作,如果多个进程都使用SO_REUSEPORT选项,则SO_REUSEPORT标志允许多个进程绑定到相同的地址。

link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5960574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档