一 概述
获取客户端Ip工具类,支持client 和 server之间有代理的情况
二 代码
import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; /** * 获取client ip */ public class IpUtil { private static final String[] CONTAINS_IP_HEADERS = { "X-Forwarded-For" , "Proxy-Client-IP" , "WL-Proxy-Client-IP" , "HTTP_CLIENT_IP" , "HTTP_X_FORWARDED_FOR" , "HTTP_X_FORWARDED" , "HTTP_X_CLUSTER_CLIENT_IP" , "HTTP_FORWARDED_FOR" , "HTTP_FORWARDED" ,"HTTP_VIA" ,"REMOTE_ADDR"}; /** * 获取client ip * @param request http 请求 * @return client ip (ipv4 或ipv6) */ public static String getClientIp(HttpServletRequest request) { String clientIp = getIpFromHttpHeader(request); if (StringUtils.isNotEmpty(clientIp)) { return clientIp; } return request.getRemoteAddr(); } //从http头获取ip 用于优先支持有proxy的情况 private static String getIpFromHttpHeader(HttpServletRequest request) { for (String header : CONTAINS_IP_HEADERS) { String clientIps = request.getHeader(header); if (StringUtils.isEmpty(clientIps)) { continue; } if (StringUtils.equalsIgnoreCase("unknown", clientIps)) { continue; } //根据代理协议,取第一为客户端ip if (!StringUtils.contains(clientIps, ",")) { return clientIps; } String[] ips = StringUtils.split(clientIps, ','); return ips[0]; } return null; } }
相关推荐
在开发Web服务时,有时我们需要获取调用服务的客户端的IP地址,以便进行日志记录、权限控制或者地理位置分析等操作。"获取客户端IP地址所需Jar包"这个主题,主要涉及的是在使用Apache Axis框架发布Web服务时,如何...
SQL Server客户端连接工具是数据库管理员和开发人员用来与Microsoft SQL Server进行交互的重要工具。它提供了图形用户界面(GUI)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...
一款免安装的sqlServer2008的客户端连接小工具,里面有详细的使用说明及汉化说明。和mysql 的 sqlyog一个性质。 注册: 运行registor.reg注册。 汉化:(软件运行保存文件目录不要使用中文目录) 1、运行“Manager....
在JavaScript中,获取客户端IP地址和MAC地址是一个相对复杂的过程,因为JavaScript的浏览器安全限制不允许直接访问客户端的MAC地址。然而,我们可以通过一些间接的方法来获取客户端的IP地址。在这个场景下,`...
标题提到的“方便好用Ms SqlServer客户端管理工具”正是这样一款软件,它具备简洁的界面设计和易于上手的操作流程,使得用户可以轻松地管理和监控多个Ms SqlServer服务器。 首先,让我们关注一下描述中提及的关键...
zktools是针对ZooKeeper开发的一款客户端连接工具,它使得与ZooKeeper交互变得更加便捷和高效。这款工具通常包含了一些实用的功能,如查看ZNode(ZooKeeper中的数据节点)信息,执行数据操作,监控会话状态,以及...
"OPC-Server模拟器服务端" 是一个用于测试和开发的工具,它模拟了一个真实的OPC UA服务器。这种模拟器可以创建虚拟的数据源,生成各种模拟的工业数据,如温度、压力等,以便开发者在没有实际设备的情况下进行应用的...
通常,VNC软件分为两部分:服务器端(VNC Server)和客户端(VNC Viewer)。服务器端安装在需要被控制的计算机上,而客户端则安装在远程操作的设备上。这个压缩包内包含了这两部分,并且已经附带了注册码,意味着...
61850-server客户端软件是一款专为电力系统设计的工具,主要用于实现对IEC 61850标准的遵从和可视化操作。该软件的核心功能是自动连接本地的61850服务器,使用户能够便捷地查看和分析ICD(IED Configuration ...
4. **端口监听**:IPServer在7070和7071端口分别接收设备注册信息和客户端查询请求,注意防火墙设置,避免阻塞这两个端口。 5. **最大设备数**:IPServer目前支持最多1000个设备注册。 6. **唯一进程**:同一操作...
- **日志分析**:通过解析服务器日志来获取IP和访问信息,例如Apache或Nginx的日志。 - **API接口**:提供给其他服务或前端应用查询在线人数和IP信息的接口。 - **实时处理**:可能使用消息队列(如RabbitMQ、...
client: 客户端相关类 db: 数据管理类 entity: 实体类 server: 服务器相关类 utils: 工具类 快速开始 环境要求 Java 8 或更高版本 IntelliJ IDEA 运行步骤 1. 克隆项目 bash 2. 导入项目 使用...
客户端工具可以获取这些状态,用于监测设备的工作情况。 4. **读输入寄存器**:输入寄存器同样为只读,用于存储设备的不可修改状态,如设备的运行模式等。通过读取这些寄存器,可以了解设备当前的工作状态。 在...
首先,C# SQL Server客户端库通常使用.NET Framework中的System.Data.SqlClient命名空间,该命名空间提供了丰富的类和方法,使得开发者能够与SQL Server进行交互。主要涉及的关键类包括SqlConnection、SqlCommand、...
**Exchange Server 2003**是微软在2003年推出的一款企业级电子邮件服务器软件,它不仅提供了邮件收发的基础功能,还集成了日程安排、联系人管理、任务分配、文档共享等一系列协同办公工具,为企业内部沟通和协作提供...
common:存放公共的工具类代码文件目录,主要是配置文件解析工具类,数据库操作工具类,本软件主要使用的是sqlalchemy orm数据库框架。 configfile:存放配置文件目录 dto:存放数据库表模型类代码文件 (3)客户端...
《Greenplum客户端工具详解及升级指南》 在大数据处理领域,Greenplum以其高效、扩展性强的特点,成为企业级数据仓库和分析平台的首选。本文将深入探讨Greenplum的客户端工具,以及如何利用提供的升级工具进行系统...
总的来说,神州数码客户端IP型是企业网络环境中实现高效、安全网络接入的一种工具,通过IP验证机制,确保了网络资源只被授权的设备使用。同时,其提供的配置文件管理和集中化管理功能,使得网络管理变得更加便捷和可...
《服务器客户端通信工具1.0.zip》是一款基于.NET框架4.5开发的简易通信软件,专为需要进行服务器与客户端间交互的人群设计。这款工具的出现,旨在简化网络通信中的编程工作,使得开发者能够更加专注于业务逻辑,而...
对于.NET环境,可以利用NetworkInterface类的GetAllNetworkInterfaces()方法获取所有网络接口,然后遍历这些接口获取IPv4或IPv6的IP地址。 2. **获取MAC地址**: 获取MAC地址通常需要底层的网络操作,PowerBuilder...