相关疑难解决方法(0)

如何枚举Java中所有已启用的NIC卡的IP地址?

ipconfig如果没有解析输出,那么有没有人有100%的纯java方式呢?

java networking ip-address

45
推荐指数
3
解决办法
5万
查看次数

InetAddress.getLocalHost().getHostAddress()返回127.0.1.1

我的问题与这个问题类似.我想获得我的机器的真实IP(不是127.0.0.1)但很奇怪,我的Ubuntu中的以下代码返回127.0.1.1

InetAddress.getLocalHost().getHostAddress()
Run Code Online (Sandbox Code Playgroud)

下面是我完整的代码,最初发布在SO在这里

public String getMachineIP() {
    try {
        String hostIP = InetAddress.getLocalHost().getHostAddress();
        if (!hostIP.equals("127.0.0.1")) {
            return hostIP;
        }

        /*
         * Above method often returns "127.0.0.1", In this case we need to
         * check all the available network interfaces
         */
        Enumeration<NetworkInterface> nInterfaces = NetworkInterface
                .getNetworkInterfaces();
        while (nInterfaces.hasMoreElements()) {
            Enumeration<InetAddress> inetAddresses = nInterfaces
                    .nextElement().getInetAddresses();
            while (inetAddresses.hasMoreElements()) {
                String address = inetAddresses.nextElement()
                        .getHostAddress();
                if (!address.equals("127.0.0.1")) {
                    return address;
                }
            }
        }
    } catch (UnknownHostException e1) {
        System.err.println("Error = " …
Run Code Online (Sandbox Code Playgroud)

java

17
推荐指数
2
解决办法
3万
查看次数

Java获取IPv4地址

对于这个链接了使用设置来产生IP地址的代码.

String ip;
    try {
       Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface iface = interfaces.nextElement();
            // filters out 127.0.0.1 and inactive interfaces
            if (iface.isLoopback() || !iface.isUp())
                continue;

            Enumeration<InetAddress> addresses = iface.getInetAddresses();
            while(addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                ip = addr.getHostAddress();
                System.out.println(iface.getDisplayName() + " " + ip);
            }
        }
    } catch (SocketException e) {
        throw new RuntimeException(e);
    }
Run Code Online (Sandbox Code Playgroud)

我已经实现了确切的代码来获取IP地址,但它提供了IPv4和IPv6地址.以下是生成的值.

Qualcomm Atheros AR5BWB222 Wireless Network Adapter 192.168.1.5
Qualcomm Atheros AR5BWB222 Wireless Network Adapter fe80:0:0:0:a874:xxxx:xxxx:9150%wlan0
Run Code Online (Sandbox Code Playgroud)

(IPv6地址编辑)

有什么方法我只能获得IPv4值,而不是两者兼而有之?

java ip-address inetaddress

5
推荐指数
1
解决办法
7138
查看次数

标签 统计

java ×3

ip-address ×2

inetaddress ×1

networking ×1