.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;
??????? }
?
轉載于:https://www.cnblogs.com/zlonlyone/p/3309285.html
總結
以上是生活随笔為你收集整理的.NET中判断国内IP和国外IP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深证股票是几开头的
- 下一篇: CentOS5.8下varnish-2.