繁体   English   中英

在java中获取eth0接口的ip地址只返回IPv6地址而不是IPv4

[英]Getting the ip address of eth0 interface in java only return IPv6 address and not IPv4

我编写了以下代码来获取我在机器上使用的eth0接口的IPv4地址。 但是代码只找到fe80:x:x:x:xxx:xxxx:xxxx:xxxx ,因为我正在寻找IPv4地址,所以没有返回。

这是代码。

    interfaceName = "eth0";
    NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
    Enumeration<InetAddress> inetAddress = networkInterface.getInetAddresses();
    InetAddress currentAddress;
    currentAddress = inetAddress.nextElement();
    while(inetAddress.hasMoreElements())
    {
        System.out.println(currentAddress);
        if(currentAddress instanceof Inet4Address && !currentAddress.isLoopbackAddress())
        {
            ip = currentAddress.toString();
            break;
        }
        currentAddress = inetAddress.nextElement();
    }

它正在弄乱它获得下一个元素的逻辑。 我在运行while compare之前得到了inetAddress下一个元素。 从而使得没有更多的元素。

然后,以下代码修复了逻辑

    interfaceName = "eth0";
    NetworkInterface networkInterface = NetworkInterface.getByName(interfaceName);
    Enumeration<InetAddress> inetAddress = networkInterface.getInetAddresses();
    InetAddress currentAddress;
    currentAddress = inetAddress.nextElement();
    while(inetAddress.hasMoreElements())
    {
        currentAddress = inetAddress.nextElement();
        if(currentAddress instanceof Inet4Address && !currentAddress.isLoopbackAddress())
        {
            ip = currentAddress.toString();
            break;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM