当前页面: 开发资料首页 → J2SE 专题 → 判断一个IP是否在某个IP段内 
判断一个IP是否在某个IP段内 
摘要: 判断一个IP是否在某个IP段内  
各位有没有一个好的算法,判断一个IP是否在某个IP段内。
谢谢各位了。
。。。。关注最好的
那你把ip读取过来啊,这样就可以去判断了,
我做过一个,判断ip是否在某个ip段里面的
用的是在JSP用request.getRemoteAddr()获得请求来自什么地方
然后和放在数据库里面的ip段范围进行比较
如果IP段为192.168.*.1-192.168.*.254
这样怎么判断呢,有算法吗?
那得看子网掩码怎么分的吧
我有好算法,不过还算是商业机密。
能具体说一下“判断一个IP是否在某个IP段内”吗?
如果符合情况,多多加分私下给你。
如果IP段为192.168.*.1-192.168.*.254
这样怎么判断呢,有算法吗?
-- 正则表达式
public class IP {
  public static void main(String[] args) {
    String current = "192.168.111.11";
    String start="192.168.0.0";
    String end="192.168.254.254";
    IP ip=new IP();
    if(ip.betweenIP(start,end,current)){
      System.out.println(current+"在"+start+"-"+end+"之间");
    }else{
      System.out.println(current+"不在"+start+"-"+end+"之间");
    }
  }
  public boolean betweenIP(String start,String end,String current){
    boolean result=false;
    start = start.replaceAll("(^|//.)(//d)(//.|$)", "$100$2$3");
    start = start.replaceAll("(^|//.)(//d)(//.|$)", "$100$2$3");
    start = start.replaceAll("(^|//.)(//d{2})(//.|$)", "$10$2$3");
    start = start.replaceAll("(^|//.)(//d{2})(//.|$)", "$10$2$3");
    end = end.replaceAll("(^|//.)(//d)(//.|$)", "$100$2$3");
    end = end.replaceAll("(^|//.)(//d)(//.|$)", "$100$2$3");
    end = end.replaceAll("(^|//.)(//d{2})(//.|$)", "$10$2$3");
    end = end.replaceAll("(^|//.)(//d{2})(//.|$)", "$10$2$3");
    current = current.replaceAll("(^|//.)(//d)(//.|$)", "$100$2$3");
    current = current.replaceAll("(^|//.)(//d)(//.|$)", "$100$2$3");
    current = current.replaceAll("(^|//.)(//d{2})(//.|$)", "$10$2$3");
    current = current.replaceAll("(^|//.)(//d{2})(//.|$)", "$10$2$3");
    if((current.compareTo(start)>=0) && (current.compareTo(end)<=0)){
      result=true;
    }
    return result;
  }
}
把ip转成long型如192.168.0.1转192168000001
比较大小就行了
竟然不给我分?!