忘记密码   免费注册 查看新帖 | 论坛精华区
ChinaUnix.net
  平台论坛 博客 微博 读书 人才 精华 文库 自测 | 频道操作系统 开发 数据库 存储 服务器 网络 IT新闻 Linux 下载 Power用户组
最近访问板块 发新帖
查看: 20991 | 回复: 38

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

帖子
137
主题
29
精华
0
可用积分
69
专家积分
0
在线时间
311 小时
注册时间
2002-11-17
最后登录
2011-10-28
论坛徽章:
0
发表于 2009-07-02 21:07:08 |显示全部楼层
是否可以?(可以修改内核),但和你通信的对端是普通的没经过修改的协议栈。
socket可以是tcp或者有udp的。这样和其他机器通信是否能正常?


好吧,我再把需求描述一下:
平台上原来有一个处理某个协议daemon1,现在该协议已经发展成了v2版本,现在想弄一个新的daemon2处理该协议的v2版本。这样,该平台将同时支持v1,v2版本。
不想将这两个daemon合并成一个,因为新版本这个不太稳定,而且分成两个deamon耦合性也比较低,很独立。由于某些原因,IPC的通信方式也不能用。问题是协议规定不管v1还是v2都只能在相同端口监听。

[ 本帖最后由 grayblaze 于 2009-7-12 09:23 编辑 ]

Rank: 1

帖子
226
主题
29
精华
0
可用积分
234
专家积分
0
在线时间
158 小时
注册时间
2007-03-02
最后登录
2011-04-23
论坛徽章:
0
发表于 2009-07-02 21:48:09 |显示全部楼层

回复 #1 grayblaze 的帖子

可以

帖子
137
主题
29
精华
0
可用积分
69
专家积分
0
在线时间
311 小时
注册时间
2002-11-17
最后登录
2011-10-28
论坛徽章:
0
发表于 2009-07-02 22:34:30 |显示全部楼层

回复 #2 yang_crystal 的帖子

我的意思是两个进程在同一个端口上监听,都能收到对方发过来的报文,tcp也行?

Rank: 1

帖子
45
主题
16
精华
0
可用积分
642
专家积分
0
在线时间
51 小时
注册时间
2005-12-06
最后登录
2010-12-23
论坛徽章:
0
发表于 2009-07-02 22:42:01 |显示全部楼层
你bind一下就知道了

Rank: 1

帖子
301
主题
74
精华
0
可用积分
421
专家积分
0
在线时间
259 小时
注册时间
2007-09-12
最后登录
2012-01-13
论坛徽章:
0
发表于 2009-07-03 00:08:59 |显示全部楼层
我记得setsockopt(fd,SOL_SOCKET...    后面的参数忘了

这个好象允许重复绑定        等下面人确定  我也使菜鸟
大战40毫升

Rank: 8Rank: 8

帖子
1896
主题
92
精华
1
可用积分
17814
专家积分
100
在线时间
2887 小时
注册时间
2005-09-20
最后登录
2012-02-09
论坛徽章:
0
发表于 2009-07-03 09:05:11 |显示全部楼层

回复 #1 grayblaze 的帖子

不可以吧。
本人开发了一款开源的分布式文件系统FastDFS,纯C编写,非常轻量级。它解决大容量存储和大并发访问的问题,当前版本为V2.13和V3.06,请各位大虾多多支持。详情参阅:http://bbs.chinaunix.net/forum-240-1.html
角斗士 or 奴隶

Rank: 8Rank: 8

帖子
4985
主题
286
精华
5
可用积分
24723
专家积分
103
在线时间
1972 小时
注册时间
2004-05-20
最后登录
2012-02-09
论坛徽章:
0
发表于 2009-07-03 09:31:52 |显示全部楼层
两个人是否可以有同样的身份证号码呢??

答案是可以,不过后果自负
辞职了,接下来干什么呢

Rank: 1

帖子
861
主题
66
精华
0
可用积分
924
专家积分
20
在线时间
1093 小时
注册时间
2003-12-25
最后登录
2011-11-04
论坛徽章:
0
发表于 2009-07-03 15:14:02 |显示全部楼层
这个....
为什么要这样用呢?
ip是用来标识机器的,端口是用来表示机器上的程序的(进程)
我是没这样用过,有时间查查
你可以一个进程接收,然后IPC啊

Rank: 8Rank: 8

帖子
7128
主题
190
精华
18
可用积分
16826
专家积分
66
在线时间
1452 小时
注册时间
2003-08-25
最后登录
2011-12-15
论坛徽章:
0
发表于 2009-07-03 15:31:34 |显示全部楼层
原帖由 grayblaze 于 2009-7-2 22:34 发表
我的意思是两个进程在同一个端口上监听,都能收到对方发过来的报文,tcp也行?


我的意思是两个进程在同一个端口上监听(可以),都能收到对方发过来的报文(只有一个),tcp也行? [/quote]
你调用listen后再fork成几个进程accept。
不同进程就同时监听一个端口了。
来了链接,内核会送给某一个进程处理。
Email: johnye@webizmail.com

Rank: 1

帖子
401
主题
60
精华
0
可用积分
742
专家积分
0
在线时间
825 小时
注册时间
2008-01-11
最后登录
2011-09-04
论坛徽章:
0
发表于 2009-07-03 15:37:03 |显示全部楼层
可以修改内核,协议栈当然可以了,结果怎样看你怎样改了
您需要登录后才可以回帖 登录 | 注册

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP