采用jni方式,使用Bsd socket,创建UdpSocket,并bind端口为零后,使用getsockname获取Android内核分配的本地端口,用于与服务器协商端口进行数据发送,协商端口成功,但是实际使用该Socket发送数据时,从抓包的数据来看,Socket随机又分配了一个端口来进行数据发送,并未使用获取到的端口,比如,我通过getsockname获取到的端口是58990,并用这个端口与服务方协商以获得服务方的接收端口,但是发送数据时,客户端却使用了48876或其他任意可用端口,但是同样的代码在PC上执行却完全正确,获取到什么端口就使用什么端口,求教各位,难道手机(Android和Iphone手机上执行结果一样)和PC在端口分配上有那么大的差别吗?应该怎样获得正确的端口号?