程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> .NET中判斷國內IP和國外IP實現代碼

.NET中判斷國內IP和國外IP實現代碼

編輯:關於C#
 

一些朋友可能會在做網站時需要考慮浏覽者如果在國內輸入網址則進入中文版網站而國外則進入英文網站,如何區分是國內浏覽者還是國外浏覽者呢,一般是通過浏覽者所在的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;
        }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved