获取ip的工具类
来源:互联网 发布:mac地址在线查询工具 编辑:程序博客网 时间:2024/05/29 13:58
import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.regex.Matcher;import java.util.regex.Pattern;@Slf4jpublic class IpUtil { public final static String ERROR_IP = "127.0.0.1"; public final static Pattern pattern = Pattern. compile("(2[5][0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})"); /** * 取外网IP * * @param request * @return */ public static String getRemoteIp(HttpServletRequest request) { String ip = request.getHeader("x-real-ip"); if (ip == null) { ip = request.getRemoteAddr(); } //过滤反向代理的ip String[] stemps = ip.split(","); if (stemps != null && stemps.length >= 1) { //得到第一个IP,即客户端真实IP ip = stemps[0]; } ip = ip.trim(); if (ip.length() > 23) { ip = ip.substring(0, 23); } return ip; } /** * 获取用户的真实ip * * @param request * @return */ public static String getUserIP(HttpServletRequest request) { // 优先取X-Real-IP String ip = request.getHeader("X-Real-IP"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("x-forwarded-for"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); if ("0:0:0:0:0:0:0:1".equals(ip)) { ip = ERROR_IP; } } if ("unknown".equalsIgnoreCase(ip)) { ip = ERROR_IP; return ip; } int pos = ip.indexOf(','); if (pos >= 0) { ip = ip.substring(0, pos); } return ip; } public static String getLastIpSegment(HttpServletRequest request) { String ip = getUserIP(request); if (ip != null) { ip = ip.substring(ip.lastIndexOf('.') + 1); } else { ip = "0"; } return ip; } public static boolean isValidIP(HttpServletRequest request) { String ip = getUserIP(request); return isValidIP(ip); } /** * 判断我们获取的ip是否是一个符合规则ip * * @param ip * @return */ public static boolean isValidIP(String ip) { if (StringUtils.isEmpty(ip)) { log.debug("ip is null. valid result is false"); return false; } Matcher matcher = pattern.matcher(ip); boolean isValid = matcher.matches(); log.debug("valid ip:" + ip + " result is: " + isValid); return isValid; } public static String getLastServerIpSegment() { String ip = getServerIP(); if (ip != null) { ip = ip.substring(ip.lastIndexOf('.') + 1); } else { ip = "0"; } return ip; } public static String getServerIP() { InetAddress inet; try { inet = InetAddress.getLocalHost(); String hostAddress = inet.getHostAddress(); return hostAddress; } catch (UnknownHostException e) { e.printStackTrace(); } return "127.0.0.1"; }}
阅读全文
0 0
- 获取Ip的工具类
- 获取ip的工具类
- ip获取工具类
- 获取真实IP的工具类
- 获取IP地址的一个工具类
- 获取请求ip的工具类
- 获取客户端IP和本地IP的工具类
- 获取IP工具类IPGetUtil
- 获取机器IP工具类
- 分享一个获取手机IP地址的工具类,
- android获取本地的ip地址工具类
- JAVA获取IP地址和本机IP地址的工具类
- 获取手机ip地址工具类
- 获取IP和Mac工具类
- 获取客户端ip地址工具类
- 获取ip地址工具
- 作为一个屌丝程序员不得不收藏的工具类 一 IP获取工具类
- JAVA工具类(6)---IPUtil工具类(获取window与linux的本地ip及客户端ip)
- leetcode之wordsearch
- CMake生成的可执行文件能够gdb调试
- Resnet结构分析
- https://www.cnblogs.com/dolphin0520/archive/2011/09/17/2179466.html
- PHP 7 新特性(2)
- 获取ip的工具类
- JDBC--连接
- (c++)数据结构与算法之图:Dijkstra、Floyd算法、判断有向图回路
- modelsim仿真出现:# do {tb_top_sync_2_modQPSK_simulate.do},并且loading...
- AutoForm R7破解版 plus及软件简介
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例
- tensorflow name_scope && variable_scope
- javascript之动画
- ReceiverCleanupUtility.zip