博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IPUtils IP操作工具类
阅读量:7206 次
发布时间:2019-06-29

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

  hot3.png

package util;
import javax.servlet.http.HttpServletRequest;
/**
 * IP处理工具类
 * 
 * lixunhui@qq.com
 * 
 */
public class IPUtil {
    /**
     * 获取真实IP:
     *    先取
     * @param request
     *
     */
    public static String getClientIP(HttpServletRequest request) {
        String ip = request.getHeader("X-Real-IP");
        if (StringUtil.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (StringUtil.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        
        return ip;
    }
    /**
     * IP转成数字类型
     * 
     * @param strIP
     *
     */
    public static long ipToLong(String strIP) {
        long[] ip = new long[4];
        int position1 = strIP.indexOf(".");
        int position2 = strIP.indexOf(".", position1 + 1);
        int position3 = strIP.indexOf(".", position2 + 1);
        ip[0] = Long.parseLong(strIP.substring(0, position1));
        ip[1] = Long.parseLong(strIP.substring(position1 + 1, position2));
        ip[2] = Long.parseLong(strIP.substring(position2 + 1, position3));
        ip[3] = Long.parseLong(strIP.substring(position3 + 1));
        // ip1*256*256*256+ip2*256*256+ip3*256+ip4
        return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
    }
    /**
     * 是否是本地IP
     * 
     * @param strIp
     *
     */
    public static boolean isLocal(String strIp) {
        if ("127.0.0.1".equals(strIp))
            return true;
        long l = ipToLong(strIp);
        if (l >= 3232235520L)
            return l <= 3232301055L;
        return (l >= 167772160L) && (l <= 184549375L);
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("202.102.249.59:"
                + Long.toString(IPUtil.ipToLong("202.102.249.59")));
        System.out.println("202.102.249.59 is local ip:"
                + Boolean.toString(IPUtil.isLocal("202.102.249.59")));
        System.out.println("127.0.0.1:"
                + Long.toString(IPUtil.ipToLong("127.0.0.1")));
        System.out.println("127.0.0.1 is local ip:"
                + Boolean.toString(IPUtil.isLocal("127.0.0.1")));
        System.out.println("10.9.1.134:"
                + Long.toString(IPUtil.ipToLong("10.9.1.134")));
        System.out.println("10.9.1.134 is local ip:"
                + Boolean.toString(IPUtil.isLocal("10.9.1.134")));
    }
}

转载于:https://my.oschina.net/huiger/blog/89575

你可能感兴趣的文章
Java精选笔记_Java入门
查看>>
The Cow-Signal
查看>>
centOS7 初始环境配置
查看>>
HTML5 Canvas绘制跟随鼠标移动的球
查看>>
leetcode1048
查看>>
Log Analysis - DataFrame
查看>>
Spring Data Solr
查看>>
页面渲染的同步和异步区别?
查看>>
MongoDB基本使用
查看>>
[转]Eclipse中远程调试Hadoop
查看>>
由一个C语言递归判断回文数的程序产生的回忆
查看>>
Linux下安装mysql5.7
查看>>
1.1.3 Getting Started_Budding Your First App_Building a Simple User Interface
查看>>
学习日记0907 GIL全局解释器锁 死锁与递归锁 信号量 Event事件 线程的queue
查看>>
linux awk函数
查看>>
性能测试
查看>>
阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署
查看>>
jQuery对象与DOM对象之间的转换(转)
查看>>
asp.net跳转页面的三种方法比较
查看>>
Bzoj1076 [SCOI2008]奖励关
查看>>