各位有没有一个好的算法,判断一个IP是否在某个IP段内。
谢谢各位了。

解决方案 »

  1.   

    那你把ip读取过来啊,这样就可以去判断了,
    我做过一个,判断ip是否在某个ip段里面的
    用的是在JSP用request.getRemoteAddr()获得请求来自什么地方
    然后和放在数据库里面的ip段范围进行比较
      

  2.   

    我有好算法,不过还算是商业机密。
    能具体说一下“判断一个IP是否在某个IP段内”吗?
    如果符合情况,多多加分私下给你。
      

  3.   

    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;
      }
    }
      

  4.   

    把ip转成long型如192.168.0.1转192168000001
    比较大小就行了