手机版 收藏 导航

hutool 获取当前机器的所有 IP 地址列表_使用 hutool 获取 IPv4 和 IPv6 地址的方法

原创   www.link114.cn   2024-12-28 17:43:05

hutool 获取当前机器的所有 IP 地址列表_使用 hutool 获取 IPv4 和 IPv6 地址的方法

在开发过程中,获取当前机器的 IP 地址是一个非常常见的需求。无论是应用部署时需要知道服务监听的地址,还是在开发测试中需要确认应用的访问地址,都需要可靠地获取当前机器的 IP 地址信息。

Java 标准库中提供 InetAddress 类来获取 IP 地址,但使用起来还是比较繁琐的。而 Hutool 作为一个强大的 Java 工具集,其中就提供非常便捷的 IP 地址获取方法。接下来,我们就详细探讨一下如何使用 Hutool 获取当前机器的所有 IP 地址,以及如何区分 IPv4 和 IPv6 地址。

Hutool 提供 NetUtil.getLocalIpv4s()NetUtil.getLocalIpv6s() 两个方法,分别用于获取当前机器的所有 IPv4 和 IPv6 地址。我们可以将这两个方法的调用组合起来,就可以获取所有的 IP 地址。示例代码如下:

List<String> ipv4List = NetUtil.getLocalIpv4s();
List<String> ipv6List = NetUtil.getLocalIpv6s();

// 合并 IPv4 和 IPv6 地址
List<String> allIpList = new ArrayList<>(ipv4List);
allIpList.addAll(ipv6List);

System.out.println("所有 IP 地址列表: " + allIpList);

通过这段代码,我们可以获取当前机器的所有 IP 地址,包括 IPv4 和 IPv6 地址。需要注意的是,机器没有配置 IPv6 地址,那么 NetUtil.getLocalIpv6s() 方法会返回一个空列表。

有时我们可能只需要获取特定类型的 IP 地址,比如只需要 IPv4 地址或只需要 IPv6 地址。这时,我们可以使用 Hutool 提供的 NetUtil.isIpv4(String ip)NetUtil.isIpv6(String ip) 方法来判断 IP 地址的类型。示例代码如下:

List<String> allIpList = NetUtil.getLocalIpAddress();
List<String> ipv4List = new ArrayList<>();
List<String> ipv6List = new ArrayList<>();

for (String ip : allIpList) {
    if (NetUtil.isIpv4(ip)) {
        ipv4List.add(ip);
    } else if (NetUtil.isIpv6(ip)) {
        ipv6List.add(ip);
    }
}

System.out.println("IPv4 地址列表: " + ipv4List);
System.out.println("IPv6 地址列表: " + ipv6List);

在这个例子中,我们首先使用 NetUtil.getLocalIpAddress() 方法获取所有的 IP 地址,遍历这个列表,使用 NetUtil.isIpv4()NetUtil.isIpv6() 方法判断每个 IP 地址的类型,并将它们分别添加到 IPv4 和 IPv6 地址列表中。这样我们就可以分别获取 IPv4 和 IPv6 地址。

需要注意的是,对于某些特殊的 IP 地址,比如 loopback 地址 (127.0.0.1 和 ::1),Hutool 也将其识别为合法的 IP 地址。您只需要获取可用于访问的 IP 地址,可以在遍历 IP 地址列表时,额外判断一下地址是否为 loopback 地址。

除获取 IP 地址列表,Hutool 还提供一些其他的 IP 地址相关方法,比如:

  • NetUtil.isInnerIP(String ipAddress): 判断 IP 地址是否为内网 IP 地址
  • NetUtil.isMatchIpv4(String ipAddress): 检测字符串是否为合法的 IPv4 地址
  • NetUtil.isMatchIpv6(String ipAddress): 检测字符串是否为合法的 IPv6 地址
  • NetUtil.getInternetIp(): 获取当前机器的公网 IP 地址

这些方法都可以帮助我们更好地处理 IP 地址相关的需求。

Hutool 为我们提供非常便捷的 IP 地址获取和处理方法。使用这些方法,我们可以轻松地获取当前机器的所有 IP 地址,并且还能区分 IPv4 和 IPv6 地址。Hutool 还提供其他一些有用的 IP 地址相关方法,如判断 IP 地址是否为内网 IP、获取公网 IP 等。这些方法大大简化 IP 地址处理的开发工作,提高开发效率。