第一步:检查正确性,把IP地址分成四段来检查。看一看每一段是不是都在0~255之间。
第二步:就要根据具体的情况了。比如:我要检查IP地址(192.168.0.9)是不是在某一段地址(192.168.0.1-192.168.0.6)之间。如果不知道IP是属于哪一类IP(A、B、C等),就用最笨的方法,比较每一个数字是不是在那段地址之间。比如192是否属于(192,192),168是否属于(168,168),0是否属于(0,0),9是否属于(1,6);
  如果知道是哪一类地址,比如C类,通常我们的IP地址也是C类IP啦。就先比较,前三位是否相等。也就是192.168.0这一段是不是一样的。然后在比较后面那一个。当然啦,这是比较同一网段的地址。如果有不同网段的,就拆分一下,然后一段一段的比较呵呵,我的方法可能比较笨,一时之间也想不起别的好方法。不知道有没有人有更好的方法呢!

解决方案 »

  1.   

    用javascirpt判断客户端,是个很好的选择
      

  2.   

    第一、判断输入的是否是ip:你可以进行字符串分析,然后对每个字段进行比较。
    第二、判断输入的是否是你允许的ip:比如你只允许从210.1.1.1——210.1.1.220的机器登陆,你可以将每个字段(以点分开)的数字转化为16进制的数,比如210.1.1.1可以变为d2010101,210.1.1.220可以变为d20101dc,然后你在将这两个16进制的数转换为10进制,分别为3523281153、3523281372,同理,你对输入的ip也这样进行处理,如果最后得到的数字在这两个数字之间,就是合法的ip。
      

  3.   

    正则表达式
    function ipCheck(ipValue)
    {
    var reg = /^\d{1,3}(\.\d{1,3}){3}$/;
    if (reg.test(ipValue))
    {
    var ary = ipValue.split('.');
    for(key in ary)
    {
    if (parseInt(ary[key]) > 255 )
    return false;
    }
    return true;

    }else
    return false;
    }
      

  4.   

    //ip地址str
              String request.getParameter("ip");
              if(str==null||str.trim().equals("")){
                //JOptionPane.showMessageDialog(this,"请输入ip地址.");            return;
              }
                str=str.trim();
                int pos1 = -1;
                int pos2 = -1;
                 String str_temp="";
                 boolean have_err=false;
                 int i=0;             //循环开始处
                while (pos1 < str.length()) {
                  pos2 = pos1;
                  pos1 = str.indexOf('.', pos2 + 1);
                  if (pos1 == -1)
                      pos1 = str.length();
                  str_temp= str.substring(pos2 + 1, pos1);
                  i++;
                  if(i>4){
                      have_err=true;
                    break;
                  }
                try{
                  int a=Integer.parseInt(str_temp);
                  if(a<0||a>255){
                      have_err=true;
                    break;
                   }
                 }
                catch(NumberFormatException nfe){
                    have_err=true;
                   break;
                 }
                }
                //循环结束处          if(have_err||i!=4){
                 JOptionPane.showMessageDialog(this,"IP地址书写不正确.");
                return;
                }
              Ip=str;
            }
      

  5.   

    //ip地址str
              String str = request.getparameter("ip");
              if(str==null||str.trim().equals("")){
                out.print("请输入ip地址.");
                return;
              }
                str=str.trim();
                int pos1 = -1;
                int pos2 = -1;
                 String str_temp="";
                 boolean have_err=false;
                 int i=0;             //循环开始处
                while (pos1 < str.length()) {
                  pos2 = pos1;
                  pos1 = str.indexOf('.', pos2 + 1);
                  if (pos1 == -1)
                      pos1 = str.length();
                  str_temp= str.substring(pos2 + 1, pos1);
                  i++;
                  if(i>4){
                      have_err=true;
                    break;
                  }
                try{
                  int a=Integer.parseInt(str_temp);
                  if(a<0||a>255){
                      have_err=true;
                    break;
                   }
                 }
                catch(NumberFormatException nfe){
                    have_err=true;
                   break;
                 }
                }
                //循环结束处          if(have_err||i!=4){
                out.print("IP地址书写不正确.");
                return;
                }
              String Ip=str;