免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: grayblaze
打印 上一主题 下一主题

同一个ip上的两个不同的socket能否绑定到相同的端口上? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-07-06 13:21 |只看该作者
应该可以实现,fork就可以了。

只不过,数据被哪个进程收走就不一定了。

论坛徽章:
0
32 [报告]
发表于 2009-07-07 19:53 |只看该作者
一个http连接使用并行tcp,这些TCP都是使用80  

论坛徽章:
0
33 [报告]
发表于 2009-07-07 21:56 |只看该作者

回复 #32 aijoex 的帖子

怎么实现的?

论坛徽章:
0
34 [报告]
发表于 2009-07-08 10:49 |只看该作者
原帖由 aijoex 于 2009-7-7 19:53 发表
一个http连接使用并行tcp,这些TCP都是使用80  

连接 <> socket

论坛徽章:
0
35 [报告]
发表于 2009-07-08 12:49 |只看该作者
当然不行,如果有客户端连接,那到底连接哪个进程

论坛徽章:
0
36 [报告]
发表于 2009-07-08 12:53 |只看该作者
原帖由 blackcat242 于 2009-7-8 10:59 发表
可以复用

能否给出测试代码学习一下?

注意:是绑定,而不是连接

论坛徽章:
0
37 [报告]
发表于 2009-07-09 22:59 |只看该作者
哪位可否给出测试代码使得:同一个ip上的两个不同的socket绑定到相同的端口上?
能绑定吗?

看了大家的讨论,我都快要糊涂了,我一直坚持同一个ip上的两个不同的socket不能绑定到相同的端口上

论坛徽章:
1
双子座
日期:2014-09-25 10:56:43
38 [报告]
发表于 2009-07-10 09:33 |只看该作者
楼主到底有啥应用场景?有啥需求?不能描述一下嘛?

Linux下有Reuse Socket的option,但是有一个问题。

如果两个socket A、B 同时使用reuse属性监听同一个端口。

只有A可以正常收发数据;B是不能收数据的。只有等待A关闭了后,B才能生效,才能正常收发数据。

论坛徽章:
0
39 [报告]
发表于 2009-07-10 12:57 |只看该作者
可以绑定,但多个进程或者线程访问不同的socket时,是谁先抓到数据,就是谁的。如果数据都是原子性的,一点问题都没有。如果是非原子性的,则会造成混乱。

如果是listen到不同的socket(同一个ip和端口)则,accept接收是原子的,即多个进程accept,没有任何问题。但如果是send或者recv就会出现问题,解决方式是另外加锁,读完或者写完指定包长,释放锁。这样就不会出现问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP