在 Hutool 中,可以使用 InetUtil.isInnerIP(String ip)
方法来判断 IP 地址是否为内网 IP。该方法会根据 IP 地址的段位来判断是否为内网 IP。IP 地址属于以下网段,则返回 true
:
要获取公网 IP 地址,可以使用 InetUtil.getPublicIp()
方法。该方法会通过访问第三方 IP 查询服务来获取当前主机的公网 IP 地址。无法访问第三方服务,则返回 null
。
为提高可靠性,我们可以使用多个 IP 查询服务,并设置超时时间。例如:
String publicIp = InetUtil.getPublicIp(
"https://ip.cn/api/index?format=json",
"https://www.ipip.net/ip.html",
2000
);
以上代码会依次尝试访问两个 IP 查询服务,在 2 秒内无法获取公网 IP 则返回 null
。