獲取訪問的ip地址

public static InetAddress getLocalHostLANAddress() throws Exception {
    try {
        InetAddress candidateAddress = null;
        // 遍歷全部的網絡接口
        for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) {
            NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
            // 在全部的接口下再遍歷IP
            for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements(); ) {
                InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
                if (!inetAddr.isLoopbackAddress()) {// 排除loopback類型地址
                    if (inetAddr.isSiteLocalAddress()) {
                        // 若是是site-local地址,就是它了
                        return inetAddr;
                    } else if (candidateAddress == null) {
                        // site-local類型的地址未被發現,先記錄候選地址
                        candidateAddress = inetAddr;
                    }
                }
            }
        }
        if (candidateAddress != null) {
            return candidateAddress;
        }
        // 若是沒有發現 non-loopback地址.只能用最次選的方案
        InetAddress jdkSuppliedAddress = InetAddress.getLocalHost();
        return jdkSuppliedAddress;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
相關文章
相關標籤/搜索