android java 在同时支持ipv4 与 ipv6 状况下,仅支持ipv4 或 ipv6的方法(测试中)

  最近一个android项目,采用mina框架搭建tcp服务端,最开始一切正常,可在调试过程中发现,apk下载安装过程中有时客户端连接不上,找了很久,最后通过adb shell去查询当前网络状态,(netstat -ano | grep 8855) 发现端口被ipv6的地址占用着,原因找到了,但造成这bug的原因却没理明白,一开始想法简单,被ipv6占用就禁用掉ipv6呗,网上找了android下禁用ipv6的方法,但比较麻烦,最后找了个工具禁用ipv6,但效果一般。

后面觉得奇怪,没去创建ipv6的连接怎么会有这样的连接呢,还是绑定到我们使用到的端口,可以确定是程序方面的问题。通过百度发现这篇文章:

        http://blog.csdn.net/wirelessqa/article/details/8218178;才明白确实如我所想的,java网络中如果支持ipv4与ipv6,那么会创建ipv6的连接,接下来又找到了一篇在eclipse下设置的文章:http://www.thinksaas.cn/group/topic/336586/

Window--Preferences--JAVA--Installed JREs--选中JDK--EDIT

Deault VM Arguments:-Djava.net.preferIPv4Stack=true


android java 在同时支持ipv4 与 ipv6 状况下,仅支持ipv4 或 ipv6的方法(测试中)_第1张图片
 
android java 在同时支持ipv4 与 ipv6 状况下,仅支持ipv4 或 ipv6的方法(测试中)_第2张图片


OK,下载测试,发现新建只有ipv4,当然可能是几率原因,还需多次测试,后续结果会再补充。


你可能感兴趣的:(编程中的错误)