获取客户端ip地址工具类
来源:互联网 发布:一洋淘宝运营助手破解 编辑:程序博客网 时间:2024/06/06 01:50
获取客户端ip地址工具类package com.baomidou.kisso.common;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.logging.Logger;import javax.servlet.http.HttpServletRequest;/** * <p> * 获取IP地址类 * </p> * * @author hubin * @Date 2014-5-8 */public class IpHelper { private static final Logger logger = Logger.getLogger("IpHelper"); private static String LOCAL_IP_STAR_STR = "192.168."; static { String ip = null; String hostName = null; try { hostName = InetAddress.getLocalHost().getHostName(); InetAddress ipAddr[] = InetAddress.getAllByName(hostName); for (int i = 0; i < ipAddr.length; i++) { ip = ipAddr[i].getHostAddress(); if (ip.startsWith(LOCAL_IP_STAR_STR)) { break; } } if (ip == null) { ip = ipAddr[0].getHostAddress(); } } catch (UnknownHostException e) { logger.severe("IpHelper error."); e.printStackTrace(); } LOCAL_IP = ip; HOST_NAME = hostName; } /** 系统的本地IP地址 */ public static final String LOCAL_IP; /** 系统的本地服务器名 */ public static final String HOST_NAME; /** * <p> * 获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。 * 但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了,如果通过了多级反向代理的话, * X-Forwarded-For的值并不止一个,而是一串IP值, 究竟哪个才是真正的用户端的真实IP呢? * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。 * 例如:X-Forwarded-For:192.168.1.110, 192.168.1.120, * 192.168.1.130, 192.168.1.100 用户真实IP为: 192.168.1.110 * </p> * * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); if (ip.equals("127.0.0.1")) { /** 根据网卡取本机配置的IP */ InetAddress inet = null; try { inet = InetAddress.getLocalHost(); ip = inet.getHostAddress(); } catch (UnknownHostException e) { logger.severe("IpHelper error." + e.toString()); } } } /** * 对于通过多个代理的情况, 第一个IP为客户端真实IP,多个IP按照','分割 "***.***.***.***".length() = * 15 */ if (ip != null && ip.length() > 15) { if (ip.indexOf(",") > 0) { ip = ip.substring(0, ip.indexOf(",")); } } return ip; }}
阅读全文
0 0
- 获取客户端ip地址工具类
- 获取客户端IP和MAC地址工具类
- 获取客户端http请求IP地址工具类
- 获取客户端IP地址
- 获取客户端ip地址
- 获取客户端IP地址
- 客户端获取IP地址
- 获取客户端IP地址
- 获取客户端IP地址
- 获取客户端IP地址
- 获取客户端IP地址
- 获取客户端ip地址
- 获取客户端ip地址
- 获取客户端IP地址
- 获取客户端IP地址
- 获取客户端IP地址
- 获取客户端IP地址
- 获取客户端IP地址
- springmvc返回json
- OKhttp
- H5的新属性contenteditable
- 实验二 线性表的几种主要存储结果
- airnbn规范示例
- 获取客户端ip地址工具类
- 在ie6,7,8中,样式编写中特有的写法,
- 昨晚的一些感触
- 人工智能可以解决现实世界哪些业务需求?
- asp.net mvc重写JsonResult返回消息
- OpenCV中C++函数imread读取图片的问题
- Android SDK的安装与环境变量配置问题
- springcloud-环境变化
- 1008. 数组元素循环右移问题