Java获取本地IP,适用Windows和Linux
最近写了一个小功能,需要获取本地IP地址,直接用:InetAddress.getLocalHost().getHostAddress()来获取 Windows上能用,结果换到Linux环境不能使用,索性写个Windows和Linux通用的工具类 拿到所有的mac地址:NetworkInterface.getNetworkInterfaces(); 然后去遍历所有的mac地址,取IPv4的地址(排除掉回环地址) 具体代码:
public static String getLocalIp() { InetAddress inetAddress = null; boolean isFind = false; // 返回标识 Enumeration<NetworkInterface> networkInterfaceLists = null; try { // 获取网络接口 networkInterfaceLists = (Enumeration<NetworkInterface>) NetworkInterface.getNetworkInterfaces(); } catch (SocketException e) { e.printStackTrace(); } while (networkInterfaceLists.hasMoreElements()) { NetworkInterface networkInterface = (NetworkInterface) networkInterfaceLists.nextElement(); Enumeration<InetAddress> ips = networkInterface.getInetAddresses(); // 遍历所有ip,获取本地地址中不是回环地址的ipv4地址 while (ips.hasMoreElements()) { inetAddress = (InetAddress) ips.nextElement(); if (inetAddress instanceof Inet4Address && inetAddress.isSiteLocalAddress() && !inetAddress.isLoopbackAddress()) { isFind = true; break; } } if (isFind) { break; } } return inetAddress == null ? "" : inetAddress.getHostAddress(); }
OK,完成!
上一篇:
Java架构师技术进阶路线图