zoukankan      html  css  js  c++  java
  • .NET中判断国内IP和国外IP

          一些朋友可能会在做网站时需要考虑浏览者如果在国内输入网址则进入中文版网站而国外则进入英文网站,如何区分是国内浏览者还是国外浏览者呢,一般是通过浏览者所在的IP进行判断(如果来个大概判断的话可以通过浏览者所用浏览器的语言版本或者操作系统的语言版本进行判断)。

         要用IP进行判断话,首先要有IP的划分表。下面提供c#判断国际国内IP的代码。

         注意:为了使得判断更准确,要及时更新最新的IP划分表。
        附:IP划分表/Files/efly/WP_IPMAPPING.rar

     

     /// <summary>
           /// 判断IP是否为国内IP
           /// </summary>
           /// <returns>返回true则是国内IP,返回false则是国外IP</returns>
            protected bool VerifyIP()
            {
                string ipaddress = System.Web.HttpContext.Current.Request.UserHostAddress;//获取浏览者所在IP
             
                string[] str = ipaddress.Split('.');
                //将IP地址转换为12位的字符串(去掉了“.”符号)
                string strs = str[0].PadLeft(3, '0') + str[1].PadLeft(3, '0') + str[2].PadLeft(3, '0') + str[3].PadLeft(3, '0');

                decimal it = decimal.Parse(strs.ToString());//将IP地址转换为decimal类型
                ZPY.BLL.WorldIp bll_wp = new ZPY.BLL.WorldIp();
                DataSet ds = bll_wp.GetAllList();//将IP划分表的中国IP所有IP段的内容填充到DataSet对象
                DataTable dt = ds.Tables[0];
                foreach (DataRow dr in dt.Rows)//遍历所有的行
                {
                    //获取每行的“StartIP”字段内容,即某一段国内IP的开始IP
                    decimal dl1 = decimal.Parse(dr["StartIP"].ToString());
                    //获取每行的“EndIP”字段内容,即某一段国内IP的结束IP
                    decimal dl2 = decimal.Parse(dr["EndIP"].ToString());
                    //如果浏览者所在IP所在在这个IP段内,则返回true 同时退出遍历
                    if (it >= dl1 && it <= dl2)
                    {
                        return true;
                    }
                }
                //如果所在IP没有在表里面中国IP的任何范围,则返回false
                return false;
            }

  • 相关阅读:
    Mysql高可用集群环境介绍
    JVM 介绍
    SpringCloud Stream 消息驱动
    SpringCloud Bus
    Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?
    cordova编译crosswalk-webview插件报错的处理办法
    Xcode10升级项目报错library not found for -lstdc++.6.0.9
    cordova 使用WKWebView 适配iphoneX及解决不能拨打电话问题
    Webpack, VSCode 和 Babel 组件模块导入别名
    vscode debugger for chrome 调试webpack的配置问题
  • 原文地址:https://www.cnblogs.com/zlonlyone/p/3309285.html
Copyright © 2011-2022 走看看