java如何获取当前ip地址

java如何获取当前ip地址

作者:Joshua Lee发布时间:2026-02-08阅读时长:0 分钟阅读次数:7

用户关注问题

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

我想知道在Java程序运行时,怎样获取当前计算机的IP地址?是否有标准的方法或类可以实现?

A

使用Java的InetAddress类获取本机IP地址

可以使用Java的java.net.InetAddress类来获取当前主机的IP地址。通过调用InetAddress.getLocalHost()方法,可以获取主机的InetAddress对象,然后调用getHostAddress()方法即可获得该主机的IP地址。代码示例:

import java.net.InetAddress;

public class IPExample {
    public static void main(String[] args) throws Exception {
        InetAddress inetAddress = InetAddress.getLocalHost();
        String ip = inetAddress.getHostAddress();
        System.out.println("当前IP地址: " + ip);
    }
}
Q
如何获取Java程序绑定的网络接口IP地址?

当机器有多个网络接口时,我想知道如何用Java获取所有接口对应的IP地址,而不是只获取默认主机IP。

A

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

Java的NetworkInterface类可以用来获取所有网络接口及其对应的IP地址。通过NetworkInterface.getNetworkInterfaces()方法可以遍历所有接口,然后对每个接口调用getInetAddresses()获取所有地址。示例代码如下:

import java.net.*;
import java.util.*;

public class AllIPExample {
    public static void main(String[] args) throws SocketException {
        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface nif = interfaces.nextElement();
            Enumeration<InetAddress> addresses = nif.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                System.out.println(nif.getName() + ": " + addr.getHostAddress());
            }
        }
    }
}
Q
如何在Java中获取公网IP地址?

Java如何获取当前设备的公网IP地址?是否能直接通过本地API获取,还是需要借助外部服务?

A

通过访问外部服务获取公网IP

Java本地无法直接获得公网IP地址,因为设备通常处于NAT或防火墙之后。一般做法是向外部公开服务发送HTTP请求,这些服务会返回你的公网IP。例如,可以访问"https://api.ipify.org"接口获取公网IP,示例代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class PublicIPExample {
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://api.ipify.org");
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String publicIp = in.readLine();
        System.out.println("公网IP地址: " + publicIp);
        in.close();
    }
}