java中如何获取ip地址

java中如何获取ip地址

作者:Rhett Bai发布时间:2026-02-08阅读时长:0 分钟阅读次数:22

用户关注问题

Q
如何用Java代码获取本机的IP地址?

我想知道用Java编写程序时,怎样获取当前机器的IP地址。

A

使用Java获取本机IP地址的方法

可以通过Java中的InetAddress类来获取本机IP地址。示例代码为:

InetAddress inetAddress = InetAddress.getLocalHost();
String ipAddress = inetAddress.getHostAddress();
System.out.println("本机IP地址: " + ipAddress);

这种方式通常返回本机的IPv4地址。

Q
如何获取本机所有网络接口的IP地址?

如果机器有多个网络接口,怎么用Java获取所有接口的IP地址?

A

获取所有网络接口IP地址的方法

Java提供了NetworkInterface类,可以枚举所有网络接口及其对应的IP地址。示例代码:

Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
    NetworkInterface ni = interfaces.nextElement();
    Enumeration<InetAddress> addresses = ni.getInetAddresses();
    while (addresses.hasMoreElements()) {
        InetAddress addr = addresses.nextElement();
        System.out.println(addr.getHostAddress());
    }
}

这段代码可以输出所有网络接口的IP地址,包括IPv4和IPv6。

Q
Java中如何区分IPv4和IPv6地址?

获取IP地址后,怎么判断它是IPv4还是IPv6?

A

判断IPv4和IPv6的方式

InetAddress提供了isAnyLocalAddress()、isLoopbackAddress()等方法,但更直接的是查看InetAddress实例的类型。若是Inet4Address则为IPv4,Inet6Address则为IPv6。例如:

InetAddress addr = InetAddress.getByName("192.168.1.1");
if (addr instanceof Inet4Address) {
    System.out.println("这是IPv4地址");
} else if (addr instanceof Inet6Address) {
    System.out.println("这是IPv6地址");
}

利用这个特性可以根据地址类型做不同处理。