如何在java中获得ip地址

如何在java中获得ip地址

作者:William Gu发布时间:2026-02-26阅读时长:0 分钟阅读次数:18

用户关注问题

Q
Java中获取本机IP地址的常用方法有哪些?

我想在Java程序中获取当前运行机器的IP地址,应该使用哪些方法或者类来实现?

A

使用InetAddress类获取本机IP地址

Java提供了InetAddress类,可以通过调用InetAddress.getLocalHost()方法获取表示本机的InetAddress对象,通过该对象调用getHostAddress()方法获取IP地址字符串。示例代码:

InetAddress inetAddress = InetAddress.getLocalHost();
String ipAddress = inetAddress.getHostAddress();
System.out.println("IP地址: " + ipAddress);
Q
如何在Java中获取网络接口上的所有IP地址?

除了获取本机默认IP外,有没有办法获取本机所有网络接口(如有线、无线等)对应的IP地址?

A

利用NetworkInterface类遍历所有网络接口获取IP

Java的NetworkInterface类可以用来获取本机全部网络接口信息,通过NetworkInterface.getNetworkInterfaces()枚举所有网络接口,然后遍历每个接口的InetAddress集合,即可获得所有绑定的IP地址。示例代码如下:

Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
    NetworkInterface ni = interfaces.nextElement();
    Enumeration<InetAddress> addresses = ni.getInetAddresses();
    while (addresses.hasMoreElements()) {
        InetAddress ia = addresses.nextElement();
        System.out.println("接口:" + ni.getName() + ", IP:" + ia.getHostAddress());
    }
}
Q
怎样确保Java程序获取到的是IPv4地址而不是IPv6?

Java环境下,获取的IP地址有时候是IPv6格式,怎样过滤只得到IPv4地址?

A

判断InetAddress是否为IPv4并筛选

InetAddress类有方法可以判断是否为IPv4地址。通常可以用instanceof判断Inet4Address类型,或者通过正则表达式判断地址格式。例如:

if (ia instanceof Inet4Address) {
    String ipv4 = ia.getHostAddress();
    // 使用ipv4
}

这样即可确保只处理IPv4地址,避免IPv6地址带来的兼容性问题。