1. 程式人生 > >java獲取本機地址

java獲取本機地址

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版本