如果系统中开启了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
|
3 |
java -Djava.net.preferIPv6Addresses= true - cp .;classes/ michael.net.TestInetAddress
|
2.在java程序里设置系统属性值如下:
3 |
import java.net.InetAddress;
|
9 |
public class TestInetAddress {
|
14 |
public static void main(String[] args) throws Exception {
|
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());
|
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());
|
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
分享到:
相关推荐
Java实现IPV6地址查询 Java IP V6 ipv6 地域 地址 查询 地址查询 使用ZX公网IPv6库 20120916版
这是本人参照如下http://www.gestioip.net/cgi-bin/subnet_calculator.cgi的IPV6解析网站,自己做java的工具类。可以对各种IPV6的格式进行解析。校验。以及对IPV6格式的压缩、以及补全。总之是全网最好用的工具类
本资料有个文件,分别介绍了WIN7/XP/LINUX的IPV6安装方法以及WIN7的IPV6设置的各种方法,而且有时候校园网用户被提示IPV6安装不正确,也可以通过本资料对网卡的设置得到解决。
IPv6 Java方法 简写转成全写,全写转成简写
联想工程师专用小工具 win7禁用IPv6及其组件工具V2.01.1联想工程师专用小工具 win7禁用IPv6及其组件工具V2.01.1联想工程师专用小工具 win7禁用IPv6及其组件工具V2.01.1联想工程师专用小工具 win7禁用IPv6及其组件...
联想工程师专用小工具 启用win7所有隧道接口的IPv6V1.91.1(1)联想工程师专用小工具 启用win7所有隧道接口的IPv6V1.91.1(1)联想工程师专用小工具 启用win7所有隧道接口的IPv6V1.91.1(1)联想工程师专用小工具 启用win7...
类中completionIpV6()为补全缩写ipv6,simplifyIpV6()为将全ipv6转化为缩写
win7的ipv6设置相关BLACKBOX_000586359914
win7下设置ipv6的bat文件。可以自动执行。不需要采用cmd窗口,方便快捷~
win7快速上ipv6,前提是本地网络配置了ipv6的基础
联想工程师专用小工具 启用win7所有隧道接口的IPv6V1.91.1联想工程师专用小工具 启用win7所有隧道接口的IPv6V1.91.1联想工程师专用小工具 启用win7所有隧道接口的IPv6V1.91.1联想工程师专用小工具 启用win7所有隧道...
IPv6是Internet协议的一个版本,目前我国的Internet协议版本是4(也称为IPv4),它的下一个版本就是IPv6。应该说Vista自带了IPv6是一个先见之举,但是就目前而言,我们根本用不着,完全可以将其禁用,因为留着IPv6...
可以设置ipv6协议设置 可以让你的计算机下载东西更快些
自己做的Java工具类。可以对IPv6地址的格式进行校验,对IPv6地址的压缩、补全,以及从16进制转换为2进制和从2进制转换为16进制。
主要用来通过frp之类的路由中转的办法远程唤醒电脑并mstsc后,得到本机的ipv6地址...随手用bat写的,只能用于win系统,且只在单网卡电脑上测试过。有多网卡的不一定能得到正确的ipv6地址,那就自己改改吧,就几行代码。
如何在win7旗舰版电脑中禁用IPv6协议?.docx
配置虚拟机动态获取IPV6
IPv6问题定位和修改情况
图解WindowsXP系统如何安装IPv6
Web应用IPv6升级改造的主要工作.docx