站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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
比较大小就行了

竟然不给我分?!


↑返回目录
前一篇: 为什么必须通过改变框架大小才能进行重绘
后一篇: 大家拿socket和多线程在做什么?