Java如何获取IP地址——包含IPv4和IPv6
1、首先,创建工程,包,和一个类。
在此不加详述,我们直接看代码。
这里,我把这个类命名为GetIpAddr

2、这里,我们首先需要知道计算机名,而并非用户名。
这么查看:
开始菜单,右键单机“计算机”,点击属性。
或者,打开计算机,左下角列表里面,右键单机“计算机”,点击属性。
位置已经标明,恕不公开我的名称,谢谢谅解。



3、接着,最最核心的就是接下来的这个方法。
我们通过InetAddress这个类来操作。
调用getAllByName()这个方法来获取一个地址数组。
我们把 这个数组遍历一次,然后输出来就是。
不多废话,代码很短。看代码:
private void getIpAddr()
throws SocketException, UnknownHostException {
// 这XXXXXXX呢,是指计算机名,右键我的电脑,点属性查看就知道
for (InetAddress it : InetAddress.getAllByName("XXXXXXX")) {
System.out.println(ipv4OrIpv6(it));
}
}

4、上面的for each 循环里面,怎么会有一个ipv4OrIpv6()的方法呢?
这里我们给出解释:
输出时候,判断这个地址是IPv4还是IPv6. 然后输出。
判断方法有点笨拙,见谅。
这也是为了视觉的直观,也夹带着个人的习惯。
代码是:
private static String ipv4OrIpv6(InetAddress ita) {
String[] itn = ita.toString().split("/");
String str = itn[1];
if (str.length() > 16) {
return "IPv6\t" + ita.toString();
}
return "IPv4\t" + ita.toString();
}

5、最后,我写一个测试的主方法,然后运行一下看看结果。
大家一起也试试?
public static void main(String[] args)
throws SocketException, UnknownHostException {
new GetIpAddr().getIpAddr();
}
结果如图:
