java如何获取想要的ip地址

java如何获取想要的ip地址

作者:Joshua Lee发布时间:2026-02-24阅读时长:0 分钟阅读次数:32

用户关注问题

Q
如何在Java中获取本机所有IP地址?

我想知道如何使用Java代码列出本机所有可用的IP地址,包括IPv4和IPv6。

A

使用Java枚举网络接口获取所有IP地址

可以通过Java的NetworkInterface类来获取本机所有网络接口,再遍历每个接口的InetAddress列表。这样可以获取所有绑定到本机的IP地址,包括IPv4和IPv6。示例代码如下:

Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
while (nets.hasMoreElements()) {
    NetworkInterface netint = nets.nextElement();
    Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
    while (inetAddresses.hasMoreElements()) {
        InetAddress inetAddress = inetAddresses.nextElement();
        System.out.println(inetAddress.getHostAddress());
    }
}
Q
如何在Java中获取指定网卡的IP地址?

我需要获取某个特定网卡(比如eth0或wlan0)的IP地址,Java中该怎么做?

A

根据网卡名称获取对应的IP地址

可以使用NetworkInterface.getByName方法获取指定名称的网卡对象,再遍历其InetAddress,找出对应IP地址。例如:

NetworkInterface networkInterface = NetworkInterface.getByName("eth0");
Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
    InetAddress inetAddress = addresses.nextElement();
    System.out.println(inetAddress.getHostAddress());
}

这段代码会打印eth0网卡绑定的所有IP地址。

Q
如何在Java中获取本地主机IPv4地址?

我只想获取本机的IPv4地址,而不是IPv6或其他形式的地址,有没有简便的方法?

A

过滤获取IPv4地址的代码示例

在获取IP地址时,可以判断地址类型,筛选出IPv4格式。示例代码:

Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
while (nets.hasMoreElements()) {
    NetworkInterface netint = nets.nextElement();
    Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
    while (inetAddresses.hasMoreElements()) {
        InetAddress inetAddress = inetAddresses.nextElement();
        if (inetAddress instanceof Inet4Address) { // 判断是否为IPv4
            System.out.println(inetAddress.getHostAddress());
        }
    }
}