diff --git a/CHANGELOG.md b/CHANGELOG.md index d1ace38d3..77a4161d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ * 【core 】 增加FieldsComparator(pr#374@Gitee) * 【core 】 FileUtil.del采用Files.delete实现 * 【core 】 改进Base64.isBase64方法增加等号判断(issue#1710@Github) +* 【core 】 改进NetUtil.getLocalHost逻辑(issue#1717@Github) ### 🐞Bug修复 diff --git a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java index 03e876c8d..f66361926 100644 --- a/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/NetUtil.java @@ -494,14 +494,24 @@ public class NetUtil { final LinkedHashSet localAddressList = localAddressList(address -> { // 非loopback地址,指127.*.*.*的地址 return false == address.isLoopbackAddress() - // 非地区本地地址,指10.0.0.0 ~ 10.255.255.255、172.16.0.0 ~ 172.31.255.255、192.168.0.0 ~ 192.168.255.255 - && false == address.isSiteLocalAddress() // 需为IPV4地址 && address instanceof Inet4Address; }); if (CollUtil.isNotEmpty(localAddressList)) { - return CollUtil.get(localAddressList, 0); + InetAddress address2 = null; + for (InetAddress inetAddress : localAddressList) { + if (false == inetAddress.isSiteLocalAddress()) { + // 非地区本地地址,指10.0.0.0 ~ 10.255.255.255、172.16.0.0 ~ 172.31.255.255、192.168.0.0 ~ 192.168.255.255 + return inetAddress; + } else if (null == address2) { + address2 = inetAddress; + } + } + + if (null != address2) { + return address2; + } } try {