java如何获取ip地址吗

java如何获取ip地址吗

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

用户关注问题

Q
如何在Java程序中获取本机IP地址?

我想知道如何使用Java代码获取运行程序的设备的IP地址,有没有简单的方法实现?

A

使用InetAddress类获取本机IP地址

Java提供了InetAddress类,可以通过该类的getLocalHost()方法获取本机的InetAddress对象,然后调用getHostAddress()方法获得IP地址。例如:

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

如果设备有多个网络接口,比如以太网和Wi-Fi,怎样用Java代码获取所有接口对应的IP地址?

A

利用NetworkInterface枚举所有网络接口和对应IP

Java的NetworkInterface类可以遍历所有网络接口。通过获取每个接口的InetAddress集合,就能得到所有IP地址。
示例代码:

Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets)) {
    Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
    for (InetAddress inetAddress : Collections.list(inetAddresses)) {
        System.out.println("Interface " + netint.getName() + " IP Address: " + inetAddress.getHostAddress());
    }
}
Q
如何在Java中区分IPv4和IPv6地址?

用Java获取到的IP地址既有IPv4又有IPv6类型,怎样区分并筛选出IPv4地址?

A

通过InetAddress的方法判断IP地址类型

InetAddress类有isAnyLocalAddress(), isLoopbackAddress(), isLinkLocalAddress(), isSiteLocalAddress(), isMulticastAddress()等方法辅助判断。要筛选IPv4地址,可以检查InetAddress对象是否为Inet4Address的实例。例如:

if (inetAddress instanceof Inet4Address) {
    // 这是IPv4地址
}