java獲取本機地址
阿新 • • 發佈:2019-02-03
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版本