为什么两个进程不能bind到同一端口

hcconquer 2010-09-27 09:08:40
为什么两个进程不能bind到同一端口
而子进程继承父进程的文件描述符,就可以和父进程一样读写同一个端口呢?
(协议,地址,端口)和进程到底是什么关系?为什么要有这种关系?
...全文
225 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymy1248227142 2012-03-23
  • 打赏
  • 举报
回复
搞不懂。。。。
oyster2008 2010-10-12
  • 打赏
  • 举报
回复
如果每一个进程在bind之前都设置端口可重用,那么对于TCP而言,可以有多个进程bind到同一个端口,只是必须bind到不同的地址。对于UDP而言,多个进程可以bind到完全一样的套接字(地址+端口)上
井朝天 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 hcconquer 的回复:]
为什么两个进程不能bind到同一端口
而子进程继承父进程的文件描述符,就可以和父进程一样读写同一个端口呢?
(协议,地址,端口)和进程到底是什么关系?为什么要有这种关系?
[/Quote]

这个从tcp/ip的实现可以得到答案。举个例子:
当一个数据包到来之后,自网卡不断向上层递送,这时要根据数据包中所包含的端口来选择进程号已交给某个进程来处理它,所以只能一个进程。多的话就会引起混乱,不知道要通知哪个进程来接收此数据包了。
kingstarer 2010-09-27
  • 打赏
  • 举报
回复
可以accept

一般是主进程bind后fork多个子进程accept
ayw215 2010-09-27
  • 打赏
  • 举报
回复
端口设置成reuseable的

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧