赞
踩
说明:亲测有用,但觉得不是很严谨,通过过滤网卡的名称实现。 static { try { InetAddress candidateAddress = null; // 遍历所有的网络接口 for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) { NetworkInterface iface = (NetworkInterface) ifaces.nextElement(); // 去除回环接口,子接口,未运行和接口 if (iface.isLoopback() || iface.isVirtual() || !iface.isUp()) { continue; } //过滤网卡名称 if (!iface.getDisplayName().contains("Intel") && !iface.getDisplayName().contains("Realtek")) { continue; } // 在所有的接口下再遍历IP for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) { InetAddress inetAddr = (InetAddress) inetAddrs.nextElement(); if (inetAddr.isSiteLocalAddress()) { // 如果是site-local地址,就是它了 if (inetAddr instanceof Inet4Address) { ip = inetAddr.getHostAddress(); } } else if (candidateAddress == null) { // site-local类型的地址未被发现,先记录候选地址 } } } } catch (Exception e) { } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。