一 概述
获取客户端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; } }
相关推荐
IpUtil工具类--通过request获取IP,通过IP获取地址(需要联网,调用淘宝的IP库)。使用场景:在网站开发记录用户增删改查日志的时候,往往需要记录操作人的IP地址,来准确的生成操作日志记录等
在.NET开发环境中,获取客户端的IP地址和MAC地址是常见的需求,这主要涉及到网络通信和系统编程的相关知识。本文将详细讲解如何在.NET中实现这一功能,并提供相关的代码示例。 首先,我们要明白IP地址和MAC地址的...
在开发Web服务时,有时我们需要获取调用服务的客户端的IP地址,以便进行日志记录、权限控制或者地理位置分析等操作。"获取客户端IP地址所需Jar包"这个主题,主要涉及的是在使用Apache Axis框架发布Web服务时,如何...
SQL Server客户端连接工具是数据库管理员和开发人员用来与Microsoft SQL Server进行交互的重要工具。它提供了图形用户界面(GUI)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...
在JavaScript中,获取客户端IP地址和MAC地址是一个相对复杂的过程,因为JavaScript的浏览器安全限制不允许直接访问客户端的MAC地址。然而,我们可以通过一些间接的方法来获取客户端的IP地址。在这个场景下,`...
标题中的“一款免安装sqlserver客户端管理工具,好用”指的是SqlDbxPersonal,这是一款专为SQL Server设计的轻量级、无需安装的数据库管理工具。它允许用户方便地进行SQL查询、数据库管理和开发工作,而无需经历传统...
支持数据库版本2000 2005 2008
标题提到的“方便好用Ms SqlServer客户端管理工具”正是这样一款软件,它具备简洁的界面设计和易于上手的操作流程,使得用户可以轻松地管理和监控多个Ms SqlServer服务器。 首先,让我们关注一下描述中提及的关键...
【雄迈客户端及修改IP工具】是针对雄迈品牌监控设备的一款综合管理软件,它集成了设备连接、视频查看、录像回放、IP地址修改等多种功能。在IT领域,这样的工具对于网络监控系统的管理和维护至关重要,尤其对于拥有...
SQL Server客户端安装包是用于与Microsoft SQL Server进行交互的软件组件集合,它包含了连接到SQL Server、执行查询、管理数据库以及进行数据导入导出等任务所需的工具。在本压缩包中,主要包含了一个名为"SQL ...
OPC Server是实现这一标准的关键组件,它提供了与设备或系统的连接,而OPC客户端则通过OPC Server获取或写入数据。在开发和调试OPC客户端程序时,一个可靠的OPC Server仿真模拟器是必不可少的工具。 标题提到的...
《64位SQL Server数据库客户端工具SQL Management Studio详解》 SQL Server Management Studio(简称SSMS)是Microsoft开发的一款强大的数据库管理工具,专为64位操作系统设计,用于管理和配置SQL Server环境。它...
ISCSI(Internet Small Computer System Interface)是一种网络存储技术,它将SCSI协议封装在TCP/IP协议上,使得存储设备可以通过IP网络进行传输和访问。在本案例中,我们讨论的是微软提供的ISCSI客户端软件——...
本文将详细讲解如何使用Java实现这一功能,以及一个名为"handsome获取ip+地区工具包"的资源。 首先,让我们理解IP地址的基本概念。IP地址(Internet Protocol Address)是互联网上设备的唯一标识,它由32位二进制数...
Java获取本机IP(可以解决多网卡问题) ...当前的获取IP的工具类写的不完善,对于不包含虚拟网卡的服务器,运行正常;一旦遇到含有虚拟网卡的服务器,不一等能取到正确的服务器IP。 解决: 优化工具类。
SQL Server 2005客户端组件是该系统的一部分,允许用户连接到SQL Server数据库服务器进行查询、管理和维护数据库。"SQLServer2005_SSMSEE.msi" 文件就是SQL Server 2005的System Management Studio Express(SSMSEE...
通常,VNC软件分为两部分:服务器端(VNC Server)和客户端(VNC Viewer)。服务器端安装在需要被控制的计算机上,而客户端则安装在远程操作的设备上。这个压缩包内包含了这两部分,并且已经附带了注册码,意味着...
**PostgreSQL 客户端管理工具详解** 在数据库管理领域,PostgreSQL 是一款开源的关系型数据库管理系统,以其强大、稳定和灵活的特性受到广大开发者喜爱。为了更高效地管理和开发 PostgreSQL 数据库,专业的客户端...
client: 客户端相关类 db: 数据管理类 entity: 实体类 server: 服务器相关类 utils: 工具类 快速开始 环境要求 Java 8 或更高版本 IntelliJ IDEA 运行步骤 1. 克隆项目 bash 2. 导入项目 使用...
2. **客户端模拟器**:客户端模拟器让用户扮演TCP连接的发起者,可以设置连接的目标IP地址和端口、发送的数据内容、连接间隔、重试策略等。它有助于验证客户端应用程序能否成功建立和维护TCP连接,以及正确处理...