当前位置:首页 > Java

java 如何获取ip

2026-03-26 05:34:13Java

获取本地 IP 地址

在 Java 中可以通过 InetAddress 类获取本地主机的 IP 地址。以下是示例代码:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class LocalIP {
    public static void main(String[] args) {
        try {
            InetAddress localHost = InetAddress.getLocalHost();
            System.out.println("Local IP Address: " + localHost.getHostAddress());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

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

如果需要获取所有网络接口的 IP 地址,可以使用 NetworkInterface 类:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class AllIPs {
    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface networkInterface = interfaces.nextElement();
                Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress address = addresses.nextElement();
                    System.out.println("Interface: " + networkInterface.getName() + 
                                     ", IP: " + address.getHostAddress());
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

获取客户端 IP 地址(Web 应用)

在 Web 应用中获取客户端的 IP 地址可以通过 HttpServletRequest 对象:

import javax.servlet.http.HttpServletRequest;

public class ClientIP {
    public static String getClientIp(HttpServletRequest request) {
        String ip = request.getHeader("X-Forwarded-For");
        if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
}

获取公网 IP 地址

如果需要获取本机的公网 IP 地址,可以通过调用外部 API 服务:

java 如何获取ip

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

public class PublicIP {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://api.ipify.org");
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            String publicIP = reader.readLine();
            System.out.println("Public IP Address: " + publicIP);
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事项

  • 获取本地 IP 地址时可能返回 IPv4 或 IPv6 地址。
  • 在 Web 应用中,客户端的 IP 地址可能被代理服务器修改,需要检查 X-Forwarded-For 等头部。
  • 调用外部 API 获取公网 IP 地址需要网络连接,并且可能受服务可用性影响。

标签: javaip
分享给朋友:

相关文章

java如何创建文件

java如何创建文件

使用 File 类创建文件 通过 File 类的 createNewFile() 方法创建文件。此方法返回布尔值,表示文件是否成功创建。 import java.io.File; import ja…

java如何下载

java如何下载

下载Java的步骤 访问Oracle官方网站或OpenJDK项目页面下载Java开发工具包(JDK)。Oracle JDK适用于商业用途,OpenJDK为开源版本。 打开浏览器,进入Oracle J…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

如何搭建java开发环境

如何搭建java开发环境

下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK版本。运行安装程序并按照提示完成安装,建议选择默认路径以减少配置复杂度。 配置环境变量 在系统环境变量中添加JAVA_HO…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…