`
cloudtech
  • 浏览: 4606702 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

C# IP地址访问控制

 
阅读更多
            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地址访问控制,得到真实的客户端地址,再得到服务端的地址,请求IP一一比较

    明日科技C#开发入门及项目实战

    实例181 使用线程扫描局域网ip地址 实例182 使用线程休眠控制图片以百叶窗效果显示 实例183 使用线程控制向窗体中拖放图片并显示 实例184 使用线程制作动画效果的状态栏 实例185 使用线程遍历文件夹 实例186 使用...

    C#开发经验技巧宝典

    1080 获取对方计算机IP地址 652 1081 利用C#操作XML数据 653 1082 显示数据库记录 653 1083 如何扫描计算机端口号 653 1084 如何获得指定网页的源代码 654 1085 如何将指定URL数据下载到本地文件 654 ...

    Visual.C#.编程精彩百例

    实例50 获取网络主机IP地址 实例51 C#对话信息框的应用 实例52 在C#中快速调用Windows API 实例53 摄氏温度与华氏温度间相互转换(1) 实例54 摄氏温度与华氏温度间相互转换(2) 实例55 使用FileSystemWatcher...

    WindowsAzure-IPAddressRestriction:根据 IP 地址限制对云服务的访问

    WindowsAzure.IPAddressRestriction库允许您根据 IP 地址、IP 地址范围甚至主机名执行此操作。 它通过对每个实例上的 Windows 防火墙进行更改来实现此目的。 每次配置实例或重启后,结构控制器将在每个实例上配置...

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    C#设计经典案例设计与实现

    案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XMI文件 本章小结 第11章 VisualC#2008与Web应用程序 案例1 利用...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例091 使用正则表达式验证IP地址 106 实例092 使用正则表达式验证URL 107 第4章 数组和集合的使用 109 4.1 数组的基本操作 110 实例093 获取多维数组的行数与列数 110 实例094 按指定条件在数组中检索元素 111 ...

    C#编程经验技巧宝典

    118 &lt;br&gt;第6章 资料验证技术 119 &lt;br&gt;6.1 网络验证应用技巧 120 &lt;br&gt;0197 如何使用正则表达式验证E-mail格式 120 &lt;br&gt;0198 如何使用正则表达式验证IP地址 120 &lt;br&gt;0199 如何使用正则表达式...

    Visual+C#+2008程序设计经典案例设计与实现.rar

    案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XMI文件 本章小结 第11章 VisualC#2008与Web应用程序 案例1 利用...

    C# 源码 C#2008经典案例

    案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XMI文件 本章小结 第11章 VisualC#2008与Web应用程序 案例1 利用...

    Visual C# 2008程序设计经典案例设计与实现

    案例2 动态获取本机IP地址 案例3 动态网络Ping操作 案例4 定时访问互联网 案例5 定制网络浏览器程序 案例6 动态发送电子邮件 案例7 动态读取XML件 本章小结 第11章 Visual C#2008与Web应用程序 案例1 利用...

    修改TCP/IP修改TCP/IP

    如何修改TCP/IP并发连接数,网络上提供不少修改办法,但其中有不少是行通的,本文将做详细分析. 一、注册表修改法的误区 为了突破SP2对TCP并发连接数的限制,网上曾经流传过一种修改注册表的方法,操作步骤如下: 单击...

    Visual C# .NET精彩编程实例集锦

    实例133 如何获取主机名和IP地址 实例134 如何 实现连续的PING 实例135 如何扫描端口 第8章 Web应用 ---------------------------------- 实例136 如何在Web页中使用广告控件 实例137 如何在Web页中使用表格控件 ...

    C#源码大集合 03(共3卷)

    │ ├─实例130 如何发送电子邮件 │ │ ├─实例131 如何实现点对点的聊天 │ │ ├─实例132 如何在线收听网络电台节目 │ │ ├─实例133 如何获取主机名和IP地址 │ │ ├─实例134 如何实现连续的...

    Visual C#.NET 2008程序设计案例集锦 (源码)

    案例8.9 IP地址的合法性检查算法 案例8.10 由旧身份证自动生成新身证算法 本章小结 第9章 网络开发技术 案例9.1 动态获取本机名和IP地址 案例9.2 动态获取本机网卡地址 案例9.3 动态修改本机IP地址 案例9.4 ...

    C#.net_经典编程例子400个

    142 3.6 Process组件 143 实例102 使用Process组件访问本地进程 143 3.7 Timer组件 145 实例103 使用Timer组件制作计时器 145 实例104 使用Timer组件显示当前系统时间 150 实例105 ...

Global site tag (gtag.js) - Google Analytics