当前位置:首页 > Java

java如何获取ip

2026-02-04 19:23:32Java

获取本地IP地址

使用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("本地IP地址: " + localHost.getHostAddress());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

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

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

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地址

使用NetworkInterface类可以枚举所有网络接口及其IP地址:

java如何获取ip

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

public class AllIPs {
    public static void main(String[] args) throws SocketException {
        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface iface = interfaces.nextElement();
            Enumeration<InetAddress> addresses = iface.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                System.out.println("接口 " + iface.getName() + " IP: " + addr.getHostAddress());
            }
        }
    }
}

注意事项

  • 本地IP地址可能返回IPv4或IPv6地址
  • 在容器化环境中,getLocalHost()可能返回容器内部IP而非主机IP
  • 客户端IP获取需要考虑代理服务器和负载均衡器的情况
  • 某些网络接口可能是虚拟接口或未激活状态

标签: javaip
分享给朋友:

相关文章

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…

如何选择java培训

如何选择java培训

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

vue实现java登录注册

vue实现java登录注册

实现 Vue 与 Java 后端的登录注册功能 前端 Vue 部分 安装必要的依赖(如 axios 用于 HTTP 请求): npm install axios 创建登录表单组件(Login.vue…

java实现js

java实现js

Java 实现 JavaScript 功能 在 Java 中实现 JavaScript 功能通常涉及以下几种方法: 使用 ScriptEngine Java 提供了 javax.script 包,可…

java如何创建线程

java如何创建线程

在Java中创建线程主要有两种方式:继承Thread类和实现Runnable接口。以下是具体实现方法: 继承Thread类 通过继承Thread类并重写run()方法,可以创建一个线程。启动线程时调…

java如何输入

java如何输入

使用 Scanner 类进行输入 Scanner 是 Java 中最常用的输入工具,位于 java.util 包中。它可以读取用户的键盘输入或文件内容。 import java.util.Scann…