提交 75b5cceb authored 作者: youbeiwuhuan's avatar youbeiwuhuan

InetAddress.getLocalHost()在复杂网络下是不可信的,所以优先遍历网卡来获取第一个可用的外网地址

上级 0492cebb
package com.xxl.job.core.util; package com.xxl.job.core.util;
import org.slf4j.Logger; import java.net.Inet6Address;
import org.slf4j.LoggerFactory;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** /**
* get ip * get ip
* @author xuxueli 2016-5-22 11:38:05 * @author xuxueli 2016-5-22 11:38:05
...@@ -42,15 +45,6 @@ public class IpUtil { ...@@ -42,15 +45,6 @@ public class IpUtil {
* @return * @return
*/ */
private static InetAddress getFirstValidAddress() { private static InetAddress getFirstValidAddress() {
InetAddress localAddress = null;
try {
localAddress = InetAddress.getLocalHost();
if (isValidAddress(localAddress)) {
return localAddress;
}
} catch (Throwable e) {
logger.error("Failed to retriving ip address, " + e.getMessage(), e);
}
try { try {
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
if (interfaces != null) { if (interfaces != null) {
...@@ -78,10 +72,23 @@ public class IpUtil { ...@@ -78,10 +72,23 @@ public class IpUtil {
} catch (Throwable e) { } catch (Throwable e) {
logger.error("Failed to retriving ip address, " + e.getMessage(), e); logger.error("Failed to retriving ip address, " + e.getMessage(), e);
} }
InetAddress localAddress = null;
try {
localAddress = InetAddress.getLocalHost();
if (isValidAddress(localAddress)) {
return localAddress;
}
} catch (Throwable e) {
logger.error("Failed to retriving ip address, " + e.getMessage(), e);
}
logger.error("Could not get local host ip address, will use 127.0.0.1 instead."); logger.error("Could not get local host ip address, will use 127.0.0.1 instead.");
return localAddress; return localAddress;
} }
/** /**
* get address * get address
* @return * @return
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论