专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

.NET中判断国内IP和国外IP

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:10:33       共计:3596 浏览
    一些朋友可能会在做网站时需要考虑浏览者如果在国内输入网址则进入中文版网站而国外则进入英文网站,如何区分是国内浏览者还是国外浏览者呢,一般是通过浏览者所在的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;
        }

 

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:如何拒绝国外IP/屏蔽国外IP访问服务器? | ·下一条:如何隐藏服务器真实IP来防御DDOS攻击

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有