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 |
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()); |
3.tomcat Web容器
可在 catalina.bat 或者 catalina.sh 中增加如下环境变量即可:
SET CATALINA_OPTS=-Djava.net.preferIPv4Stack=true