Java获取IP多个网卡

引言

在网络编程中,获取本机IP地址是常见的操作之一。在Java中,我们可以使用InetAddress类和NetworkInterface类来获取本机IP地址以及多个网卡的IP地址。本文将介绍如何使用Java获取IP地址以及多个网卡的IP地址。

获取本机IP地址

在Java中,我们可以使用InetAddress类来获取本机IP地址。InetAddress类提供了静态方法getLocalHost()来获取本机的InetAddress对象,然后使用getHostAddress()方法来获取IP地址。

以下是获取本机IP地址的示例代码:

import java.net.InetAddress;

public class GetLocalIpAddress {
    public static void main(String[] args) {
        try {
            InetAddress inetAddress = InetAddress.getLocalHost();
            String ipAddress = inetAddress.getHostAddress();
            System.out.println("IP Address: " + ipAddress);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们首先使用InetAddress.getLocalHost()方法获取本机的InetAddress对象,然后使用getHostAddress()方法获取IP地址。最后打印IP地址。

获取多个网卡的IP地址

有些情况下,我们可能需要获取本机多个网卡的IP地址。在Java中,我们可以使用NetworkInterface类来获取多个网卡的信息。

以下是获取多个网卡的IP地址的示例代码:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

public class GetMultipleIpAddresses {
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while (networkInterfaces.hasMoreElements()) {
                NetworkInterface networkInterface = networkInterfaces.nextElement();
                if (networkInterface.isUp()) {
                    Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
                    while (inetAddresses.hasMoreElements()) {
                        InetAddress inetAddress = inetAddresses.nextElement();
                        if (!inetAddress.isLoopbackAddress() && inetAddress.getHostAddress().indexOf(":") == -1) {
                            System.out.println("IP Address: " + inetAddress.getHostAddress());
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们首先使用NetworkInterface.getNetworkInterfaces()方法获取所有的网卡接口,然后遍历每个网卡接口。我们使用isUp()方法来判断网卡是否处于活动状态。对于每个活动的网卡,我们使用getInetAddresses()方法获取网卡的所有IP地址,然后遍历每个IP地址。我们使用isLoopbackAddress()方法来排除回环地址,使用getHostAddress()方法获取IP地址,最后打印IP地址。

总结

获取本机IP地址和多个网卡的IP地址在网络编程中是常见的需求。在Java中,我们可以使用InetAddress类和NetworkInterface类来实现这个功能。InetAddress类提供了静态方法getLocalHost()来获取本机的InetAddress对象,然后使用getHostAddress()方法获取IP地址。NetworkInterface类提供了静态方法getNetworkInterfaces()来获取所有的网卡接口,然后我们可以遍历每个网卡来获取IP地址。

希望本文对你有所帮助,如果有任何疑问,请随时留言。

参考链接

  • [Java官方文档 - InetAddress](
  • [Java官方文档 - NetworkInterface](