Java 动态获取机器 IP 地址

在 Java 中,我们可以使用各种方法来获取机器的 IP 地址。这对于一些网络编程和系统管理任务非常有用。本文将介绍如何使用 Java 获取机器的 IP 地址,并提供相应的代码示例。

1. 使用 InetAddress 类

Java 提供了 InetAddress 类,用于表示 IP 地址。我们可以使用该类的静态方法 getLocalHost() 来获取本地机器的 IP 地址。

import java.net.InetAddress;

public class GetMachineIP {
    public static void main(String[] args) throws Exception {
        InetAddress localhost = InetAddress.getLocalHost();
        String ip = localhost.getHostAddress();
        
        System.out.println("机器的 IP 地址是:" + ip);
    }
}

上述代码中,我们通过调用 getLocalHost() 方法获取本地主机的 InetAddress 对象,然后通过调用 getHostAddress() 方法获取 IP 地址。

2. 使用 NetworkInterface 类

除了 InetAddress 类,Java 还提供了 NetworkInterface 类,用于获取网络接口的信息,包括 IP 地址。

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

public class GetMachineIP {
    public static void main(String[] args) throws Exception {
        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface iface = interfaces.nextElement();
            Enumeration<InetAddress> addresses = iface.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress address = addresses.nextElement();
                if (!address.isLoopbackAddress()) {
                    String ip = address.getHostAddress();
                    System.out.println("机器的 IP 地址是:" + ip);
                }
            }
        }
    }
}

上述代码中,我们通过调用 getNetworkInterfaces() 方法获取所有的网络接口,然后遍历每个接口的 IP 地址。在实际应用中,我们可以根据需求选择特定的网络接口。

序列图

下面是一个通过 InetAddress 类获取机器 IP 地址的简单示例的序列图。

sequenceDiagram
    participant Client
    participant InetAddress
    participant NetworkInterface
    
    Client->>InetAddress: getLocalHost()
    InetAddress->>NetworkInterface: getNetworkInterfaces()
    NetworkInterface->>InetAddress: getInetAddresses()
    InetAddress-->>NetworkInterface: IP 地址列表
    opt 非回环地址
        InetAddress->>Client: 返回 IP 地址
    end

状态图

下面是一个使用 InetAddress 类获取机器 IP 地址的简单示例的状态图。

stateDiagram
    [*] --> 获取 IP 地址
    获取 IP 地址 --> IP 地址列表
    IP 地址列表 --> [*]

总结

本文介绍了在 Java 中获取机器 IP 地址的方法。我们可以使用 InetAddress 类的 getLocalHost() 方法获取本地机器的 IP 地址,也可以使用 NetworkInterface 类获取网络接口的 IP 地址。根据实际需求,我们可以选择使用适合的方法来获取机器的 IP 地址。