当前页面: 开发资料首页 → 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
比较大小就行了
竟然不给我分?!