string ipLimit = "192.168.152.x,192.168.153.x,192.168.154.x,192.168.155.x,192.168.156.x,192.168.157.x,192.168.158.x,192.168.159.x,192.168.x.x";
string[] arrSeperators = { "," };
string[] ipList = ipLimit.Split(arrSeperators, StringSplitOptions.RemoveEmptyEntries);
if (!CheckIPLimit(ipList, GetRemoteIP()))
{
return“不可以访问”;
}
获得请求的IP地址函数GetRemoteIP():
private string GetRemoteIP()
{
string ip = "";
if (Context.Request.ServerVariables["HTTP_VIA"] != null) // 服务器, using proxy
{
//得到真实的客户端地址
ip = Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP.
}
else//如果没有使用代理服务器或者得不到客户端的ip not using proxy or can't get the Client IP
{
// 得到服务端的地址
ip = Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
}
return ip;
}
}
下面的函数将string[] ipList与请求IP一一比较(分段比较):
private bool CheckIPLimit(string[] ipList, string remoteIP)
{
foreach (string ip in ipList)
{
if (CompareIP(ip, remoteIP))
{
return true;
}
}
return false;
}
private bool CompareIP(string oldIP, string newIP)
{
string[] arrSeperators = { "." };
string[] oldIPList = oldIP.Split(arrSeperators, StringSplitOptions.RemoveEmptyEntries);
string[] newIPList = newIP.Split(arrSeperators, StringSplitOptions.RemoveEmptyEntries);
if (oldIPList.Length != newIPList.Length)
{
return false;
}
for (int i = 0; i < oldIPList.Length; i++)
{
if (oldIPList[i] != checkedIP & oldIPList[i] != newIPList[i])//截取的ip是‘x’则是true
{
return false;
}
}
return true;
}
分享到:
相关推荐
IP地址访问控制,得到真实的客户端地址,再得到服务端的地址,请求IP一一比较
实例181 使用线程扫描局域网ip地址 实例182 使用线程休眠控制图片以百叶窗效果显示 实例183 使用线程控制向窗体中拖放图片并显示 实例184 使用线程制作动画效果的状态栏 实例185 使用线程遍历文件夹 实例186 使用...
1080 获取对方计算机IP地址 652 1081 利用C#操作XML数据 653 1082 显示数据库记录 653 1083 如何扫描计算机端口号 653 1084 如何获得指定网页的源代码 654 1085 如何将指定URL数据下载到本地文件 654 ...
实例50 获取网络主机IP地址 实例51 C#对话信息框的应用 实例52 在C#中快速调用Windows API 实例53 摄氏温度与华氏温度间相互转换(1) 实例54 摄氏温度与华氏温度间相互转换(2) 实例55 使用FileSystemWatcher...
WindowsAzure.IPAddressRestriction库允许您根据 IP 地址、IP 地址范围甚至主机名执行此操作。 它通过对每个实例上的 Windows 防火墙进行更改来实现此目的。 每次配置实例或重启后,结构控制器将在每个实例上配置...
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XMI文件 本章小结 第11章 VisualC#2008与Web应用程序 案例1 利用...
实例091 使用正则表达式验证IP地址 106 实例092 使用正则表达式验证URL 107 第4章 数组和集合的使用 109 4.1 数组的基本操作 110 实例093 获取多维数组的行数与列数 110 实例094 按指定条件在数组中检索元素 111 ...
118 <br>第6章 资料验证技术 119 <br>6.1 网络验证应用技巧 120 <br>0197 如何使用正则表达式验证E-mail格式 120 <br>0198 如何使用正则表达式验证IP地址 120 <br>0199 如何使用正则表达式...
案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XMI文件 本章小结 第11章 VisualC#2008与Web应用程序 案例1 利用...
案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XMI文件 本章小结 第11章 VisualC#2008与Web应用程序 案例1 利用...
案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XML件 本章小结 第11章 Visual C#2008与Web应用程序 案例1 利用...
如何修改TCP/IP并发连接数,网络上提供不少修改办法,但其中有不少是行通的,本文将做详细分析. 一、注册表修改法的误区 为了突破SP2对TCP并发连接数的限制,网上曾经流传过一种修改注册表的方法,操作步骤如下: 单击...
实例133 如何获取主机名和IP地址 实例134 如何 实现连续的PING 实例135 如何扫描端口 第8章 Web应用 ---------------------------------- 实例136 如何在Web页中使用广告控件 实例137 如何在Web页中使用表格控件 ...
│ ├─实例130 如何发送电子邮件 │ │ ├─实例131 如何实现点对点的聊天 │ │ ├─实例132 如何在线收听网络电台节目 │ │ ├─实例133 如何获取主机名和IP地址 │ │ ├─实例134 如何实现连续的...
案例8.9 IP地址的合法性检查算法 案例8.10 由旧身份证自动生成新身证算法 本章小结 第9章 网络开发技术 案例9.1 动态获取本机名和IP地址 案例9.2 动态获取本机网卡地址 案例9.3 动态修改本机IP地址 案例9.4 ...
142 3.6 Process组件 143 实例102 使用Process组件访问本地进程 143 3.7 Timer组件 145 实例103 使用Timer组件制作计时器 145 实例104 使用Timer组件显示当前系统时间 150 实例105 ...