先贴一下代码,代码出处:https://blog.csdn.net/wangxihong_123/article/details/80482725
public static String getLinuxLocalIp() {
String ip = "";
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
String name = intf.getName();
if (!name.contains("docker") && !name.contains("lo")) {
// 不含有docker和lo
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
InetAddress inAddress = enumIpAddr.nextElement();
if (!inAddress.isLoopbackAddress()) {
String ipaddress = inAddress.getHostAddress().toString();
if (!ipaddress.contains("::") && !ipaddress.contains("0:0:")
&& !ipaddress.contains("fe80")) {
ip = ipaddress;
}
}
}
}
}
} catch (SocketException e) {
System.out.println("获取ip失败");
ip = "127.0.0.1";
}
return ip;
}
代码测试在windows单网卡(台式机)的情况下可以获取到正确IP地址,多块网卡的情况下没办法获取到。
linux环境下正常获取ip(虚拟机测试结果)
贴一下我本机的网卡配置。机器为笔记本,系统为win10企业版1803版本