当前位置:首页 > Java

ip如何获取java

2026-03-25 21:55:17Java

IP 地址获取方法(Java)

在 Java 中获取 IP 地址可以通过多种方式实现,具体取决于需求场景(如获取本地 IP 或远程客户端 IP)。以下是常见方法:

获取本机 IP 地址

使用 InetAddress 类获取本机 IP 地址:

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

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

注意getLocalHost() 可能返回环回地址(如 127.0.0.1),需遍历所有网络接口获取真实 IP:

ip如何获取java

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

public class RealLocalIP {
    public static void main(String[] args) throws SocketException {
        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface iface = interfaces.nextElement();
            if (iface.isLoopback() || !iface.isUp()) continue;
            Enumeration<InetAddress> addresses = iface.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                if (addr instanceof Inet4Address) {
                    System.out.println("Local IPv4: " + addr.getHostAddress());
                }
            }
        }
    }
}

获取客户端 IP(Web 应用)

在 Servlet 或 Spring 应用中,通过 HttpServletRequest 获取客户端 IP:

import javax.servlet.http.HttpServletRequest;

public class ClientIPUtils {
    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;
    }
}

说明:需处理代理和负载均衡场景(如 X-Forwarded-For 头)。

ip如何获取java

获取公网 IP(通过外部 API)

调用第三方服务获取本机公网 IP:

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

public class PublicIPFetcher {
    public static void main(String[] args) throws Exception {
        URL whatIsMyIP = new URL("http://checkip.amazonaws.com");
        BufferedReader in = new BufferedReader(new InputStreamReader(whatIsMyIP.openStream()));
        System.out.println("Public IP: " + in.readLine());
    }
}

备选 API

  • https://api.ipify.org
  • https://ident.me

注意事项

  1. IPv6 支持:若需支持 IPv6,检查 Inet6Address 实例。
  2. 异常处理:网络操作需捕获 IOExceptionSocketException
  3. 安全性:客户端 IP 可能被伪造,关键场景需结合其他验证机制。

以上方法覆盖了从本地到远程 IP 获取的常见需求,可根据具体场景选择适配方案。

标签: ipjava
分享给朋友:

相关文章

如何运行java

如何运行java

运行Java程序的方法 安装Java开发工具包(JDK) 确保系统已安装JDK。可通过命令行输入 java -version 检查是否安装。若未安装,需从Oracle官网或OpenJDK下载并配置环境…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…

如何用java编程

如何用java编程

Java编程基础指南 环境配置 安装Java开发工具包(JDK),推荐使用最新版本。配置环境变量,确保JAVA_HOME指向JDK安装路径,并将bin目录添加到系统PATH中。验证安装是否成功: j…