解决win7以上系统 java只获取IPv6的问题

标签: win7 系统 java | 发表时间:2014-03-02 15:32 | 作者:45571845
出处:http://www.iteye.com

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

java.net.preferIPv4Stack (default: false)

If IPv6 is available on the operating system the underlying native socket
will be an IPv6 socket. This allows Java(tm) applications to connect too, and
accept connections from, both IPv4 and IPv6 hosts.

If an application has a preference to only use IPv4 sockets then this
property can be set to true. The implication is that the application will not be
able to communicate with IPv6 hosts.

在实际的运用中有以下几种办法可以实现指定获取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 }

java.net.preferIPv4Stack=true 运行结果如下:

——-InetAddress.getLocalHost()
HostName := Michael-PC
HostAddress := 10.7.246.163
——-InetAddress.getByName(“micmiu.com”)
HostName := micmiu.com
HostAddress := 173.254.28.17

java.net.preferIPv6Addresses=true  运行结果如下:

——-InetAddress.getLocalHost()
HostName := Michael-PC
HostAddress := fe80:0:0:0:6518:85da:8690:16eb%13
——-InetAddress.getByName(“micmiu.com”)
HostName := micmiu.com
HostAddress := 173.254.28.17

3.tomcat Web容器

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

原创文章,转载请注明: 转载自 micmiu – 软件开发+生活点滴http://www.micmiu.com/ ]

本文链接地址:  http://www.micmiu.com/lang/java/java-net-ipv4-ipv6/



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [win7 系统 java] 推荐:

解决win7以上系统 java只获取IPv6的问题

- - 编程语言 - ITeye博客
如果系统中开启了IPV6协议(比如window7),java网络编程经常会获取到IPv6的地址,这明显不是我们想要的结果,搜索发现很多蹩脚的做法是:禁止IPv6协议. 其实查看官方文档有详细的说明:. 在实际的运用中有以下几种办法可以实现指定获取IPv4的地址:. 在java启动命令中增加一个属性配置:-Djava.net.preferIPv4Stack=true.

你若用win7系统就看看吧!

- changlei - 草榴社區
目前,电脑市场预装系统应该都是win7了,用惯xp的人一下子适应不了win7.但win7比VISTA要好,因为它有很多新的功能. 不幸的是其中的一些功能并不是很容易被人们所发现,所以我们把其中的一些最重要的技巧和窍门创建成一个列表并且一步一步的向大家进行介绍. 如果是直接就使用win7的人更应该看了.

Ubuntu 10.10+Win7 双系统重装 Win7 后恢复 Ubuntu 引导方法

- hama - Wow! Ubuntu
装完server 2008之后重启就更加悲剧地发现grub启动菜单不见了....不是重装了windows之后又要重装ubuntu吧....配置了好久的说,OMG!小狼决定说什么也不能重装ubuntu,就虚心地向google求救,经过一段时间的折腾,终于成功引导回ubuntu. 现在就说说一下引导过程吧,注意了小狼用的是liveCD方法,就是装系统时用的光盘,没有的童鞋可以跳过了,当然想参考一下的也可以继续往下看.

Win7 系统平板 NEC LaVie Touch 动手玩

- NOir - Engadget 中国版
本来打算在 9 月份发售的 NEC VersaPro VK15V/TM-C(是的,这个型号名有点长) 比预期中来的晚一点,不过总算是来了,下周这款 Windows 7 平板将会在日本发售. 同时型号名是 NEC LaVie Touch ,我们有幸在 CEATEC 上看到它,不过其全球其它地方的发售时间依然未知.

Zetro – Win8 系统主题降临 Win7 | 小众软件 > 美化主题

- 希宁 - 小众软件
第五二狗对所有新版操作系统都充满狂热,现在处于 Win8 发烧阶段. 鉴于网上流通的 Win8 版本还没有成熟到适合日常使用的地步,他决定先把 Win7 换成 win8 的样子,过过眼瘾. Zetro 是用于 Win7 的 Win8 风格主题,简洁明快,再次出身于 deviantArt 社区. 刚上主题时,二狗对大片大片的白色区域很不习惯,容忍几十分钟以后,二狗发现其实还是挺喜欢这货的.

四步完成win7 ubuntu双系统安装(硬盘,无需光驱)

- - CSDN博客推荐文章
理论上win7、vista系统32位或64位均可. ubuntu适用与10.X版本,且ubuntu-10.10-desktop-i386.iso 和ubuntu-10.10-desktop-amd64.iso测试通过. 接下来以ubuntu-10.10-desktop-amd64.iso安装为例作为说明.

win7 快捷键

- Neolandscaper - 博客园-首页原创精华区
Windows Key + # (# is any number) : Quickly Launch a new instance of the application in the Nth slot on the taskbar. Though some of them are there in previous versions of Windows, Windows 7 has incorporated many of them and have started many afresh..

NT6快捷安装器 – 将 Win7 装入移动硬盘 | 小众软件 > 系统工具

- frocket - 小众软件
微软对 Windows 7 做了一些限制,正常情况下不能安装到移动硬盘和 USB 闪存. 可突破微软的限制从来不是新鲜事,NT6快捷安装器是无忧启动论坛 fujianabc、yuanxin8701 两位大大的作品:支持将 Win7/Vista 直接安装到移动硬盘,还可以手动选择 bootmgr 所在分区,修改系统分区盘符.

python/java操作linux系统命令

- 天朝小民 - ITeye论坛最新讨论
看来python的确是做为脚本语言来使用的话,非常的方便. 来看一个处理linux命令的脚本. #coding:utf-8 import os import commands ''' 采用os.popen(cmd)来执行命令,要获取输出,需要read()来读取 ''' cmd = 'ls -l' values = os.popen(cmd).read() #print values for v in values.split('\n'):.

Java系统程序员修炼之道

- - 博客 - 伯乐在线
从2002开始接触Java学会HelloWorld这么经典的程序到如今不知不觉已经十年啦,十年中亲耳听到过不少大牛的演讲,见到过项目中的神人在键盘上运指如飞的编程速度,当时就被震撼了. 当编程越来越成体力活,我们还能有自己的思想,还能修炼为Java系统级别的 程序员嘛. 学习与修炼以下知识与技能,帮你早日达成愿望.