解决java网络编程IPv6问题
如果系统中开启了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™ 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](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
解决java网络编程IPv6问题相关推荐
- 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等
文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...
- Java 网络编程(超级详细)
前言:本文是初学Java网络编程时所记录的学习笔记,方便以后查阅学习,同时也作为资料总结分享给大家,如果有问题欢迎指出!! 1. 网络编程 1.1 网络编程基本概念 1.网络 将不同区域的电脑连接到一 ...
- JavaSE学习笔记_20:Java网络编程
Java网络编程 温馨提示1: (1)网络编程这一块会涉及到很多不同异常,得抛. (2)涉及到iO,还是按照iO的思想来解决问题. (3)接收端和发送端或者是服务端和客户端程序开启之后,两者的 ...
- Java网络编程笔记
Java网络编程 14-1 网络编程概述 14-2 网络通信要素概述 14-3 通信要素一:IP和端口号 InetAddress类测试 14-4 通信要素二:网络协议 14-5 TCP网络编程 TCP ...
- JAVA网络编程知识学习
JAVA网络编程知识学习 学习目标 第一章 网络编程入门 1.1软件结构 1.2 网络通信协议 1.3 协议分类 1.4 网络编程三要素 协议 IP地址 IP地址分类 常用命令 端口号 InetAdd ...
- 【Java基础】Java网络编程
目录 一.Java网络编程基础知识 1.网络分类 2.网络编程模型 3.网络协议 4.套接字和端口 二.Java TCP通信:Java ServerSocket类和Socket类 1.ServerSo ...
- Java网络编程(一)网络编程入门知识
文章目录 第一章 Java网络编程入门 1.前言 1.1 进程之间的通信 1.2 计算机网络概念 1.3 网络模型之OSI参考模型 1.4 TCP/IP参考模型和TCP/IP协议 1.4.1 模型解析 ...
- JAVA 网络编程技术学习笔记
目录 一.网络编程基本概念(了解) 1.1 计算机网络 1.2 网络通信协议 1.2.1什么是网络通信协议 1.2.2 OSI七层协议模型 1.2.3网络协议的分层 1.3数据的封装和解封 1.4 I ...
- java网络编程 听_java网络编程 - 亲亲媛的个人空间 - OSCHINA - 中文开源技术交流社区...
一.TCP/UDP,Socket,Http,Ftp简介 1.TCP/IP是个协议组(主要解决数据如何在网络中传输),可分为三个层次:网络层.传输层和应用层: 网络层:IP协议(支持网间互联的数据报协议 ...
最新文章
- 2020-11-11 C++函数后面加“:”的含义
- 收藏|490页阿里、腾讯、京东等公司的推荐算法最佳实践!pdf限时下载
- 将FeatClass属性表高效率转换成DataTable
- python太慢了-python 读取大文件越来越慢
- css设置一个div显示在另一个div的上层_CSS工程中常见问题-1
- mysql显示RMB符号乱码_mysql显示乱码
- SQL Server链接服务器 Linked Server
- 无比乐java游戏_传智播客Java JavaEE+物联网云计算 就业班
- 教师排课程序设计c语言,计算中心
- react 版权问题_react兼容ie
- Visio直角连接线增加直角拐弯
- React中useEffect与生命周期钩子函数的对应关系
- cd linux 镜像,cdlinux镜像 v0.9.7官方版
- linux查询对外2827端口运行文件,lsof介绍
- 使用tar分别压缩文件夹为文件
- [oracle]通过DBLINK远程查询带DBLINK的视图
- html窗口最小宽度和高度,html设置尺寸大小的方法
- [激光原理与应用-23]:《激光原理与技术》-9- 激光产生技术-锁模技术
- 车载以太网100base-T1
- 企业员工信息管理系统源码+ppt+论文+中期检查表+sql