翻译-----IP地址转换成IP Number并得到国家

今天在家里没有什么事做,就在网上走走看,看了一篇根据IP地址找到国家;这个其实在我们工作都用到个,但是不知道是怎么来做的.

在下面我将把http://www.codeproject.com/KB/aspnet/aspxcode_net.aspx翻译过与大家一起来分享;

 

原理:现在各个国家的IP都有一个IP Begin Number 和一个Ip End Number数字,把国家的开始的数据,各结束的数据都存在数据库

     最后通过一个计算公式把真实的IP地址转换成Ip Number,从数据库中找在Begin ,End之间的,如果在这间,就是这个国家的了;

     关于各个国家的IP Number这个应该是国标的吧,应该不会变的,在文章的后提供下载;

 

IP Number计算公式:         

IP Number = 16777216*+ 65536*+ 256*+ z     (1)
where
IP Address 
= w.x.y.z


 

 

 

 

 

 

 

说明:16777216,65536,256;这个数都是系数,就像圆周率3.14一样

      w.x.y.z分别对应真实的IP地址,eg:192.168.0.19;link

 

eg:

IP Address = 202.186.13.4
So, w 
= 202, x = 186, y = 13 and z = 4
IP Number 
= 16777216*202 + 65536*186 + 256*13 + 4
          
= 3388997632 + 12189696 + 3328 + 4
          
= 3401190660

这样就得到一个Ip Number了,现在我们就可以到我们的数据库去找它对就的IP段,即能得来是哪一个国家

关于从数据库的代码我就不多说了哟

 

关键是我们要明白原理,找到解决方案的思路;

国标IP范围下载:https://files.cnblogs.com/caodaiming/ip-to-country.zip

 

posted @ 2008-08-09 15:17  阳光追梦  阅读(5005)  评论(17编辑  收藏  举报
/*快速评论*/ #div_digg { position: fixed; bottom: 10px; right: 15px; border: 2px solid #ECD7B1; padding: 10px; width: 140px; background-color: #fff; border-radius: 5px 5px 5px 5px !important; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); } /** 不知道为什么页面加载完成时还读不到div_digg。可能也是动态生成的。 所以这里只能用定时器 不断的读取,当读取到了再给它动态添加快捷按钮 **/ //自定义 定时器[当元素加载完成是执行回调函数] function customTimer(inpId,fn) { if ($(inpId).length) { fn(); } else { var intervalId = setInterval(function () { if ($(inpId).length) { //如果存在了 clearInterval(intervalId); // 则关闭定时器 customTimer(inpId,fn); //执行自身 } }, 100); } } //页面加载完成是执行 $(function () { customTimer("#div_digg", function () { var div_html = "
\ 关注\  | \ 顶部\  | \ 评论\
"; $("#div_digg").append(div_html); //tbCommentBody }); });