InetAddress.getLocalHost()在复杂网络下是不可信的,所以优先遍历网卡来获取第一个可用的外网地址
This commit is contained in:
parent
0492cebb2e
commit
75b5cceb19
|
@ -1,14 +1,17 @@
|
||||||
package com.xxl.job.core.util;
|
package com.xxl.job.core.util;
|
||||||
|
|
||||||
|
import java.net.Inet6Address;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.NetworkInterface;
|
||||||
|
import java.net.SocketException;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.NetworkInterface;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
import java.util.Enumeration;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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 {
|
||||||
* @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,9 +72,22 @@ 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
|
||||||
|
|
Loading…
Reference in New Issue