• java 判断IP是否符合限定的IP范围内


     1 /* 判断是否是内网IP */
     2     public static boolean isInnerIP(String ipAddress) {
     3         boolean isInnerIp = false;
     4         long ipNum = getIpNum(ipAddress);
     5         /**
     6          * 私有IP:A类 10.0.0.0-10.255.255.255 B类 172.16.0.0-172.31.255.255 C类
     7          * 192.168.0.0-192.168.255.255 当然,还有127这个网段是环回地址
     8          **/
     9         long aBegin = getIpNum("10.0.0.0");
    10         long aEnd = getIpNum("10.255.255.255");
    11         long bBegin = getIpNum("172.16.0.0");
    12         long bEnd = getIpNum("172.31.255.255");
    13         long cBegin = getIpNum("192.168.0.0");
    14         long cEnd = getIpNum("192.168.255.255");
    15         isInnerIp = isInner(ipNum, aBegin, aEnd)
    16                 || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd)
    17                 || ipAddress.equals("127.0.0.1");
    18         return isInnerIp;
    19     }
    20 
    21     /* 获取IP数 */
    22     private static long getIpNum(String ipAddress) {
    23         String[] ip = ipAddress.split("\\.");
    24         long a = Integer.parseInt(ip[0]);
    25         long b = Integer.parseInt(ip[1]);
    26         long c = Integer.parseInt(ip[2]);
    27         long d = Integer.parseInt(ip[3]);
    28         long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
    29         return ipNum;
    30     }
    31 
    32     private static boolean isInner(long userIp, long begin, long end) {
    33         return (userIp >= begin) && (userIp <= end);
    34     }
     1     public static void main(String[] args) {  
     2         String begin = "222.177.202.0";
     3         String end = "222.177.202.255";
     4         String userIP = "222.177.202.11";//客户端IP
     5         long a = getIpNum(begin);
     6         long b = getIpNum(end);
     7         long c = getIpNum(userIP);
     8         if(isInner(Long.valueOf(c),Long.valueOf(a),Long.valueOf(b))){
     9             System.out.println("在范围内");
    10         }else{
    11             System.out.println("在范围外");
    12         }
    13     }  
  • 相关阅读:
    委托学习小记(1)
    C# 对XML的 创建、查询
    C#多线程学习(六) 互斥对象
    C#多线程学习(二) 如何操纵一个线程
    C#多线程学习(四) 多线程的自动管理(线程池)
    16/11/22_plsql
    写日志
    内存检测
    开源
    vs2005 远程调试。
  • 原文地址:https://www.cnblogs.com/Overbord/p/2864836.html
Copyright © 2020-2023  润新知