当前位置:首页 > 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文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

java如何遍历map

java如何遍历map

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

如何选择java培训

如何选择java培训

评估培训机构资质 选择有正规资质的机构,查看其营业执照、办学许可证等。优先考虑具备人力资源和社会保障部或教育部认证的机构,这类机构的教学质量和课程设置通常更规范。 考察课程内容与行业需求匹配度…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

如何启用java

如何启用java

启用 Java 的方法 检查 Java 是否已安装 在命令行或终端输入 java -version,如果显示版本信息,说明 Java 已安装。若未安装,需从 Oracle 官网 或 OpenJDK 下…