解决java网络编程IPv6问题

1.在android系统开发中

// android2.2不支持IpV6,以防止android2.2下mina报错
        System.setProperty("java.net.preferIPv6Addresses", "false");


2.如果系统中开启了IPV6协议(比如window7),java网络编程经常会获取到IPv6的地址,这明显不是我们想要的结果,搜索发现很多蹩脚的做法是:禁止IPv6协议。其实查看官方文档有详细的说明:

在实际的运用中有以下几种办法可以实现指定获取IPv4的地址:

1. 在java启动命令中增加一个属性配置:-Djava.net.preferIPv4Stack=true

1 java -Djava.net.preferIPv4Stack=true -cp .;classes/ michael.net.TestInetAddress
2  
3 java -Djava.net.preferIPv6Addresses=true -cp .;classes/ michael.net.TestInetAddress
2.在java程序里设置系统属性值如下

1 package michael.net;
2  
3 import java.net.InetAddress;
4  
5 /**
6  * @blog http://www.micmiu.com
7  * @author Michael
8  */
9 public class TestInetAddress {
10  
11     /**
12      * @param args
13      */
14     public static void main(String[] args) throws Exception {
15         // 注释指定系统属性值
16         // System.setProperty("java.net.preferIPv4Stack", "true");
17         // System.setProperty("java.net.preferIPv6Addresses", "true");
18         System.out.println("-------InetAddress.getLocalHost()");
19         InetAddress addr = InetAddress.getLocalHost();
20         System.out.println("HostName := " + addr.getHostName());
21         System.out.println("HostAddress := " + addr.getHostAddress());
22  
23         System.out.println("-------InetAddress.getByName(\"micmiu.com\")");
24         InetAddress addr2 = InetAddress.getByName("micmiu.com");
25         System.out.println("HostName := " + addr2.getHostName());
26         System.out.println("HostAddress := " + addr2.getHostAddress());
27  
28     }
29 }

3.tomcat Web容器

可在 catalina.bat 或者 catalina.sh 中增加如下环境变量即可:
SET CATALINA_OPTS=-Djava.net.preferIPv4Stack=true


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值