From 93e65f8a9121ca23df82ffc334c9814a3989375a Mon Sep 17 00:00:00 2001 From: yaokai <24456865@qq.com> Date: Mon, 6 Mar 2023 10:38:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9C=AC=E6=9C=BAip=E5=9C=B0=E5=9D=80=E7=9A=84=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/dtp/common/util/CommonUtil.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/dtp/common/util/CommonUtil.java b/common/src/main/java/com/dtp/common/util/CommonUtil.java index c9405e3a..71b4db0c 100644 --- a/common/src/main/java/com/dtp/common/util/CommonUtil.java +++ b/common/src/main/java/com/dtp/common/util/CommonUtil.java @@ -7,7 +7,10 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.core.env.Environment; import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; import java.net.UnknownHostException; +import java.util.Enumeration; /** * CommonUtil related @@ -32,8 +35,8 @@ public final class CommonUtil { String address = null; try { - address = InetAddress.getLocalHost().getHostAddress(); - } catch (UnknownHostException e) { + address = getLocalHostExactAddress().getHostAddress(); + } catch (UnknownHostException | SocketException e) { log.error("get localhost address error.", e); } @@ -48,4 +51,23 @@ public final class CommonUtil { public static Instance getInstance() { return INSTANCE; } + + private static InetAddress getLocalHostExactAddress() throws SocketException, UnknownHostException { + InetAddress candidateAddress = null; + Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); + while (networkInterfaces.hasMoreElements()) { + NetworkInterface networkInterface = networkInterfaces.nextElement(); + for (Enumeration inetAddresses = networkInterface.getInetAddresses(); inetAddresses.hasMoreElements(); ) { + InetAddress inetAddress = inetAddresses.nextElement(); + if (!inetAddress.isLoopbackAddress() && inetAddress.isSiteLocalAddress()) { + if (!networkInterface.isPointToPoint()) { + return inetAddress; + } else { + candidateAddress = inetAddress; + } + } + } + } + return candidateAddress == null ? InetAddress.getLocalHost() : candidateAddress; + } } -- Gitee