IP 限制规则
来源:互联网 发布:支持mac的大型网游 编辑:程序博客网 时间:2024/05/10 18:30
这些天正好工作时,需要用到这个功能,写完后还是觉得拿出来和大家分享下。。。
/**
* 判断访问者IP 是否符合规则
*
* @author ganjianwu @live.cn*
*/
public class ConversionIP {
/**
*
* @param ip
* 访问者IP
* @param configip
* ip规则,每个IP必须以逗号隔开
* @return
*/
public boolean conversion(String ip, String[] configip) {
boolean b = false;
String s = "*";
for (int i = 0; i < configip.length; i++) {
// 判断该个IP中是否存在“*”号
if (0 > configip[i].indexOf(s)) {
b = singleip(ip, configip[i]);
} else {
b = xinhaoip(ip, configip[i]);
}
if (b) {
break;
}
}
return b;
}
/**
* ip地址转成整数.
*
* @param ip
* 访问者ip
* @return
*/
public long ipTOlong(String ip) {
String[] longip = ip.split("[.]");
long num = 16777216 * Integer.parseInt(longip[0]) + 65536
* Integer.parseInt(longip[1]) + 256
* Integer.parseInt(longip[2]) + Integer.parseInt(longip[3]);
return num;
}
/**
* 单个ip段的ip限制
*
* @param ip
* 访问者ip
* @param configip
* ip规则,每个IP必须以逗号隔开
* @return
*/
public boolean singleip(String ip, String configip) {
boolean b = configip.equals(ip);
return b;
}
/**
* 区域段的ip限制,即带有“*”的ip段
*
* @param ip
* 访问者ip
* @param configip
* ip规则,每个IP必须以逗号隔开
* @return
*/
public boolean xinhaoip(String ip, String configip) {
boolean b = false;
long longip = ipTOlong(ip);
long ip_begin = ipTOlong(configip.replaceAll("//*", "1"));
long ip_end = ipTOlong(configip.replaceAll("//*", "255"));
if (ip_begin <= longip && ip_end >= longip) {
b = true;
}
return b;
}
}
其实只要注意一点,要搞明白IP是什么?其实IP就是一组32位的二进制,明白了这个就简单了,
我们就可以将IP转换为long,这样就可与你IP规则中的IP区段进行比较了。
大家如果有什么更好的办法,也可以告知于我。。。谢谢!!!
- IP 限制规则
- IP限制
- ip限制
- 限制ip
- ip限制
- Nginx 内置变量,细化规则,真实IP获取及限制连接请求
- 限制IP访问页面--限制IP
- IP地址限制函数
- Asp限制IP访问
- 限制客户端ip访问
- ip限制函数
- Asp限制IP访问
- php限制ip
- IP限制程序
- IP限制程序
- PHP限制IP
- IP限制访问控制
- 简单IP限制
- 深入Lambda表达式
- 将墙上绘画做成连贯的flash,怎么做到的?
- RMReport3.51破解手札㈡
- 在弹出网页中 ,要语句不弹出新网页
- maven 项目转 eclipse
- IP 限制规则
- delphi窗口的双缓冲绘制浅析
- 生理卫生课的经典对白
- 在CLUSTER环境给SQL SERVER 2008打补丁时需要注意的问题
- RMReport3.51破解手札㈢
- Effective C# 备忘
- Google Book Search APIs——谷歌图书搜索API
- SQLServer2008中恼人的"阻止保存要求重新创建表的更改"
- 关于JNI 和JAVA 编码的问题小结