Utils:获取Linux环境下当前的IPv4的IP地址

star2017 1年前 ⋅ 699 阅读

获取 Linux 环境下当前的 IP v4 的 IP 地址。在不修改 Linux 系统的 host 映射的情况下,InetAddress.getLocalHost().getHostAddress()获取的 IP 地址很可能是 127.0.0.1,而真正想要的是对外 IP 地址。

public ArrayList<String> getIPv4List() throws SocketException {
    ArrayList<String> ipv4List = new ArrayList<>();
    //返回所有网卡
    Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
    while (interfaces.hasMoreElements()) {
        NetworkInterface ni = (NetworkInterface) interfaces.nextElement();
        Enumeration ipAddrEnum = ni.getInetAddresses();
        while (ipAddrEnum.hasMoreElements()) {
            InetAddress addr = (InetAddress) ipAddrEnum.nextElement();
            if (addr.isLoopbackAddress()) {
                continue;
            }
            String ip = addr.getHostAddress();
            if (ip.contains(":")) {
                //IPV6跳出本次循环
                continue;
            }
            ipv4List.add(ip);
        }
    }
    Collections.sort(ipv4List);

    /*String ip = null;
        ArrayList<String> iPv4List = this.getIPv4List();
        for (String ipv4 : iPv4List) {
            if (ipv4.equals("127.0.0.1")) {
                continue;
            }
            ip = ipv4;
            break;
        }
        return ip;*/

    return ipv4List;
}
更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: