采用jni方式,使用Bsd socket,创建UdpSocket,并bind端口为零后,使用getsockname获取Android内核分配的本地端口,用于与服务器协商端口进行数据发送,协商端口成功,但是实际使用该Socket发送数据时,从抓包的数据来看,Socket随机又分配了一个端口来进行数据发送,并未使用获取到的端口,比如,我通过getsockname获取到的端口是58990,并用这个端口与服务方协商以获得服务方的接收端口,但是发送数据时,客户端却使用了48876或其他任意可用端口,但是同样的代码在PC上执行却完全正确,获取到什么端口就使用什么端口,求教各位,难道手机(Android和Iphone手机上执行结果一样)和PC在端口分配上有那么大的差别吗?应该怎样获得正确的端口号?
解决方案 »
- 我写的小游戏发布啦~\(≧0≦)/~
- ZoomControls图片放大缩小到一定程度的时候按钮不可再点,怎么实现??
- 关于textview里的网络地址,请教一下
- 求助Permission Denial问题
- android新手请教各位大大们一些小问题!
- 请教大家,android编写连连看的思路
- 如何通过程序在View上放置一个EditText?
- SharedPreferences.Editor里的抽象方法putXXX()为什么不用自己实现
- HttpClient抓取网页内容的问题
- 天气应用的动态背景是怎么实现的
- ProgressDialog不显示问题
- android中listview跟textview和focus问题
Android 和IPhone底层确实是使用的Unix,所以我用的Bsd Socket(Unix 下的Socket) 啊,PC是windows,而且Winsock、winsock2都是基于Bsd Socket封装的,内部实现几乎一样,求正确获取Android手机可有端口的方法