第一步:检查正确性,把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这一段是不是一样的。然后在比较后面那一个。当然啦,这是比较同一网段的地址。如果有不同网段的,就拆分一下,然后一段一段的比较呵呵,我的方法可能比较笨,一时之间也想不起别的好方法。不知道有没有人有更好的方法呢!
第二步:就要根据具体的情况了。比如:我要检查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这一段是不是一样的。然后在比较后面那一个。当然啦,这是比较同一网段的地址。如果有不同网段的,就拆分一下,然后一段一段的比较呵呵,我的方法可能比较笨,一时之间也想不起别的好方法。不知道有没有人有更好的方法呢!
第二、判断输入的是否是你允许的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。
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;
}
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;
}
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;