socket中localport和port可以一样吗?

xieliuxx 2013-10-28 10:28:05
在做项目的过程中,发现当指定server port比较大时,例如43500,这时在client与server建立socket的过程中,系统会分配一个与server port一样的端口给localport,这个时候传输数据等于自己发自己,请问localport和server port可以一样吗?这个难道是JDK的bug?
...全文
1337 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
teemai 2013-10-28
  • 打赏
  • 举报
回复
引用 5 楼 xieliuxx 的回复:
[quote=引用 4 楼 huxiweng 的回复:] [quote=引用 2 楼 xieliuxx 的回复:] [quote=引用 1 楼 huxiweng 的回复:] 你确定吗?localport和server端的没什么关系的
感谢你的回复! 对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么?[/quote] 但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么? 什么叫正常值?大的也是正常值啊。[/quote] 是这样的,我认为开始设置了一个server port,例如43000后,socket会与client端建立connection,这时系统会分配一个localport给client进行socket创建,但是这里总是与server port一样,我看了jdk里面源码,这个应该是随机的,很奇怪。而且从client端发送比如“abc”到server端,我期望返回是1,但是返回的还是我发送的“abc”,感觉就是自己给自己发送信息。但是我开始server port设置成较小端口号,比如23000后,我从client端发送“abc”后就会返回我期望的1[/quote] 你说的同样的还真奇怪,按理说client端是随机的,就算随机到一样的也不会自己给自己发啊,你是不是程序逻辑有问题? 因为client端socket只指定了连接到server端的哪个端口,而自身用哪个随机
xieliuxx 2013-10-28
  • 打赏
  • 举报
回复
引用 4 楼 huxiweng 的回复:
[quote=引用 2 楼 xieliuxx 的回复:] [quote=引用 1 楼 huxiweng 的回复:] 你确定吗?localport和server端的没什么关系的
感谢你的回复! 对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么?[/quote] 但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么? 什么叫正常值?大的也是正常值啊。[/quote] 是这样的,我认为开始设置了一个server port,例如43000后,socket会与client端建立connection,这时系统会分配一个localport给client进行socket创建,但是这里总是与server port一样,我看了jdk里面源码,这个应该是随机的,很奇怪。而且从client端发送比如“abc”到server端,我期望返回是1,但是返回的还是我发送的“abc”,感觉就是自己给自己发送信息。但是我开始server port设置成较小端口号,比如23000后,我从client端发送“abc”后就会返回我期望的1
teemai 2013-10-28
  • 打赏
  • 举报
回复
引用 2 楼 xieliuxx 的回复:
[quote=引用 1 楼 huxiweng 的回复:] 你确定吗?localport和server端的没什么关系的
感谢你的回复! 对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么?[/quote] 但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么? 什么叫正常值?大的也是正常值啊。
xieliuxx 2013-10-28
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
你确定吗?localport和server端的没什么关系的
假如我开始port设置小一点的话,localport是不会与port一样的,这样通信也是正常的
xieliuxx 2013-10-28
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
你确定吗?localport和server端的没什么关系的
感谢你的回复! 对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么?
teemai 2013-10-28
  • 打赏
  • 举报
回复
你确定吗?localport和server端的没什么关系的

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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