当前位置:编程学习 > JAVA >>

socket中localport和port可以一样吗?

在做项目的过程中,发现当指定server port比较大时,例如43500,这时在client与server建立socket的过程中,系统会分配一个与server port一样的端口给localport,这个时候传输数据等于自己发自己,请问localport和server port可以一样吗?这个难道是JDK的bug? socket jdk port localport --------------------编程问答-------------------- 你确定吗?localport和server端的没什么关系的 --------------------编程问答--------------------


引用 1 楼 huxiweng 的回复:
你确定吗?localport和server端的没什么关系的


感谢你的回复!
对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么? --------------------编程问答--------------------
引用 1 楼 huxiweng 的回复:
你确定吗?localport和server端的没什么关系的

假如我开始port设置小一点的话,localport是不会与port一样的,这样通信也是正常的 --------------------编程问答--------------------
引用 2 楼 xieliuxx 的回复:
Quote: 引用 1 楼 huxiweng 的回复:

你确定吗?localport和server端的没什么关系的


感谢你的回复!
对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么?


但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么? 

什么叫正常值?大的也是正常值啊。 --------------------编程问答--------------------
引用 4 楼 huxiweng 的回复:
Quote: 引用 2 楼 xieliuxx 的回复:




Quote: 引用 1 楼 huxiweng 的回复:

你确定吗?localport和server端的没什么关系的


感谢你的回复!
对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么?


但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么? 

什么叫正常值?大的也是正常值啊。


是这样的,我认为开始设置了一个server port,例如43000后,socket会与client端建立connection,这时系统会分配一个localport给client进行socket创建,但是这里总是与server port一样,我看了jdk里面源码,这个应该是随机的,很奇怪。而且从client端发送比如“abc”到server端,我期望返回是1,但是返回的还是我发送的“abc”,感觉就是自己给自己发送信息。但是我开始server port设置成较小端口号,比如23000后,我从client端发送“abc”后就会返回我期望的1 --------------------编程问答--------------------
引用 5 楼 xieliuxx 的回复:
Quote: 引用 4 楼 huxiweng 的回复:

Quote: 引用 2 楼 xieliuxx 的回复:




Quote: 引用 1 楼 huxiweng 的回复:

你确定吗?localport和server端的没什么关系的


感谢你的回复!
对的,我个人认为localport和port即使一样也没关系的,但是为什么我port指定超过32000后,localport系统分配的就会与port一样,而且返回的值就是我传出去的值,并没有在server端做处理。但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么?


但是,port换成稍微小点的端口值,例如23440后,就会有正常值返回,这是为什么? 

什么叫正常值?大的也是正常值啊。


是这样的,我认为开始设置了一个server port,例如43000后,socket会与client端建立connection,这时系统会分配一个localport给client进行socket创建,但是这里总是与server port一样,我看了jdk里面源码,这个应该是随机的,很奇怪。而且从client端发送比如“abc”到server端,我期望返回是1,但是返回的还是我发送的“abc”,感觉就是自己给自己发送信息。但是我开始server port设置成较小端口号,比如23000后,我从client端发送“abc”后就会返回我期望的1

你说的同样的还真奇怪,按理说client端是随机的,就算随机到一样的也不会自己给自己发啊,你是不是程序逻辑有问题?
因为client端socket只指定了连接到server端的哪个端口,而自身用哪个随机
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,