java获取本机IPV4和IPV6地址工具类
工具类如下,自取即可
import org.apache.commons.lang3.StringUtils;
import java.net.InetAddress;
public class LocalIpUtil {
private static String Ipv4;
private static Long lastRefreshTime = -1L;
private static final Long REFRESH_TIME = 2 * 60 * 1000L;
private static void init() {
try {
if (lastRefreshTime + REFRESH_TIME > SystemClock.now() && StringUtils.isNotBlank(Ipv4)) {
return;
}
lastRefreshTime = SystemClock.now();
Ipv4 = InetAddress.getLocalHost().getHostAddress();
} catch (Exception ignored) {}
}
public static String getInet4Address() {
init();
return Ipv4;
}
}
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
public class LocalIpUtil {
private static String Ipv4;
private static String Ipv6;
private static Long lastRefreshTime = -1L;
private static final Long refreshTime = 2 * 60 * 1000L;
private static void init() {
try {
if (lastRefreshTime + refreshTime > SystemClock.now() && StringUtils.isNotBlank(Ipv4) && StringUtils.isNotBlank(Ipv6)) {
return;
}
lastRefreshTime = SystemClock.now();
Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();
while (enumeration.hasMoreElements()) {
NetworkInterface network = enumeration.nextElement();
if (network.isVirtual() || !network.isUp()) {
continue;
}
Enumeration<InetAddress> addresses = network.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && address instanceof Inet4Address) {
Ipv4 = address.getHostAddress();
}
if (address.isLinkLocalAddress() && address instanceof Inet6Address) {
Ipv6 = address.getHostAddress();
}
}
}
} catch (Exception ignored) {}
}
public static String getInet6Address() {
init();
return Ipv6;
}
public static String getInet4Address() {
init();
return Ipv4;
}
}