java如何获取本地主机ip

java如何获取本地主机ip

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

用户关注问题

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

我想知道怎么用Java代码来获取当前机器的IP地址,有没有简单的方法?

A

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

可以通过Java的InetAddress类来获取本地主机的IP地址。具体做法是调用InetAddress.getLocalHost()方法,然后使用getHostAddress()方法获取IP地址。示例代码如下:

InetAddress localHost = InetAddress.getLocalHost();
String ipAddress = localHost.getHostAddress();
System.out.println("本机IP地址:" + ipAddress);
Q
Java获取本机IP时出现127.0.0.1该怎么办?

我使用InetAddress.getLocalHost()得到的是127.0.0.1,这不是我想要的真实局域网IP,该如何解决?

A

避免获取到环回地址的解决方法

InetAddress.getLocalHost()有时会返回环回地址127.0.0.1,如果想获取局域网的真实IP,可以遍历网络接口(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();
        if (!addr.isLoopbackAddress() && addr instanceof Inet4Address) {
            System.out.println("本机局域网IP: " + addr.getHostAddress());
        }
    }
}
Q
怎样获取多个网卡的IP地址?

我电脑有多个网卡,想用Java获取它们所有的IP地址,该怎么做?

A

通过遍历网络接口获取所有IP地址

Java允许通过NetworkInterface类遍历所有网卡及其IP地址。该方式能获取每个网卡绑定的所有IPv4和IPv6地址。示例代码:

Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
while (nets.hasMoreElements()) {
    NetworkInterface netint = nets.nextElement();
    System.out.println("网卡名称: " + netint.getName());
    Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
    while (inetAddresses.hasMoreElements()) {
        InetAddress inetAddress = inetAddresses.nextElement();
        System.out.println("IP地址: " + inetAddress.getHostAddress());
    }
}