JAVA工具类(6)---IPUtil工具类(获取window与linux的本地ip及客户端ip)
发布日期:2021-06-30 22:40:58 浏览次数:2 分类:技术文章

本文共 3516 字,大约阅读时间需要 11 分钟。

package com.gcloud.common;import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.net.UnknownHostException;import java.util.Enumeration;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * ip工具类 * Created by charlin on 2017/9/9. */public class IPUtil {
/** * 检查IP是否合法 * @param ip * @return */ public static boolean ipValid(String ip) { String regex0 = "(2[0-4]\\d)" + "|(25[0-5])"; String regex1 = "1\\d{2}"; String regex2 = "[1-9]\\d"; String regex3 = "\\d"; String regex = "(" + regex0 + ")|(" + regex1 + ")|(" + regex2 + ")|(" + regex3 + ")"; regex = "(" + regex + ").(" + regex + ").(" + regex + ").(" + regex + ")"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(ip); return m.matches(); } /** * 获取本地ip 适合windows与linux * * @return */ public static String getLocalIP() { String localIP = "127.0.0.1"; try { Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement(); InetAddress ip = ni.getInetAddresses().nextElement(); if (!ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) { localIP = ip.getHostAddress(); break; } } } catch (Exception e) { try { localIP = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e1) { e1.printStackTrace(); } } return localIP; } /** * 获取客户机的ip地址 * @param request * @return */ public static String getClientIp(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 == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("http_client_ip"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } // 如果是多级代理,那么取第一个ip为客户ip if (ip != null && ip.indexOf(",") != -1) { ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim(); } return ip; } /** * 把ip转化为整数 * @param ip * @return */ public static long translateIP2Int(String ip){ String[] intArr = ip.split("\\."); int[] ipInt = new int[intArr.length]; for (int i = 0; i

———————————————————————

(java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万)
有需求者请进站查看,非诚勿扰

https://item.taobao.com/item.htm?spm=686.1000925.0.0.4a155084hc8wek&id=555888526201

01.高级架构师四十二个阶段高

02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)
——————————————————————–

转载地址:https://lovoo.blog.csdn.net/article/details/77913934 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JAVA工具类(7)---MD5加密工具类
下一篇:JAVA工具类(5) --- 批量导入excel表格数据到数据库中

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月23日 04时09分05秒