纯真IP地址数据库应该是国内最流行的IP地址数据库 纯真IP地址数据库(官方下载) http://www.cz88.net/fox/ipdat.shtml <?php /*-------------------------------------------------- ip2address [qqwry.dat] --------------------------------------------------*/ class ip { var $fh; //IP数据库文件句柄 var $first; //第一条索引 var $last; //最后一条索引 var $total; //索引总数 //构造函数 function __construct() { $this->fh = fopen('qqwry.dat', 'rb'); //qqwry.dat文件 $this->first = $this->getLong4(); $this->last = $this->getLong4(); $this->total = ($this->last - $this->first) / 7; //每条索引7字节 } //检查IP合法性 function checkIp($ip) { $arr = explode('.',$ip); if(count($arr) !=4 ) { return false; } else { for ($i=0; $i < 4; $i++) { if ($arr[$i] <'0' || $arr[$i] > '255') { return false; } } } return true; } function getLong4() { //读取little-endian编码的4个字节转化为长整型数 $result = unpack('Vlong', fread($this->fh, 4)); return $result['long']; } function getLong3() { //读取little-endian编码的3个字节转化为长整型数 $result = unpack('Vlong', fread($this->fh, 3).chr(0)); return $result['long']; } //查询信息 function getInfo($data = "") { $char = fread($this->fh, 1); while (ord($char) != 0) { //国家地区信息以0结束 $data .= $char; $char = fread($this->fh, 1); } return $data; } //查询地区信息 function getArea() { $byte = fread($this->fh, 1); //标志字节 switch (ord($byte)) { case 0: $area = ''; break; //没有地区信息 case 1: //地区被重定向 fseek($this->fh, $this->getLong3()); $area = $this->getInfo(); break; case 2: //地区被重定向 fseek($this->fh, $this->getLong3()); $area = $this->getInfo(); break; default: $area = $this->getInfo($byte); break; //地区没有被重定向 } return $area; } function ip2addr($ip) { if(!$this -> checkIp($ip)){ return false; } $ip = pack('N', intval(ip2long($ip))); //二分查找 $l = 0; $r = $this->total; while($l <= $r) { $m = floor(($l + $r) / 2); //计算中间索引 fseek($this->fh, $this->first + $m * 7); $beginip = strrev(fread($this->fh, 4)); //中间索引的开始IP地址 fseek($this->fh, $this->getLong3()); $endip = strrev(fread($this->fh, 4)); //中间索引的结束IP地址 if ($ip < $beginip) { //用户的IP小于中间索引的开始IP地址时 $r = $m - 1; } else { if ($ip > $endip) { //用户的IP大于中间索引的结束IP地址时 $l = $m + 1; } else { //用户IP在中间索引的IP范围内时 $findip = $this->first + $m * 7; break; } } } //查询国家地区信息 fseek($this->fh, $findip); $location['beginip'] = long2ip($this->getLong4()); //用户IP所在范围的开始地址 $offset = $this->getlong3(); fseek($this->fh, $offset); $location['endip'] = long2ip($this->getLong4()); //用户IP所在范围的结束地址 $byte = fread($this->fh, 1); //标志字节 switch (ord($byte)) { case 1: //国家和区域信息都被重定向 $countryOffset = $this->getLong3(); //重定向地址 fseek($this->fh, $countryOffset); $byte = fread($this->fh, 1); //标志字节 switch (ord($byte)) { case 2: //国家信息被二次重定向 fseek($this->fh, $this->getLong3()); $location['country'] = $this->getInfo(); fseek($this->fh, $countryOffset + 4); $location['area'] = $this->getArea(); break; default: //国家信息没有被二次重定向 $location['country'] = $this->getInfo($byte); $location['area'] = $this->getArea(); break; } break; case 2: //国家信息被重定向 fseek($this->fh, $this->getLong3()); $location['country'] = $this->getInfo(); fseek($this->fh, $offset + 8); $location['area'] = $this->getArea(); break; default: //国家信息没有被重定向 $location['country'] = $this->getInfo($byte); $location['area'] = $this->getArea(); break; } //gb2312 to utf-8(去除无信息时显示的CZ88.NET) foreach ($location as $k => $v) { $location[$k] = str_replace('CZ88.NET','',iconv('gb2312', 'utf-8', $v)); } return $location; } //析构函数 function __destruct() { fclose($this->fh); } } $ip = new ip(); $addr = $ip -> ip2addr('IP地址'); print_r($addr); ?>
相关推荐
java读取纯真IP地址数据库 使用java读取纯真ip数据库,里面带一个最近更新的ip库,想要最新的,可以拿名字百度
纯真IP库的读取方法 纯真IP库的读法 纯真IP库的读法
java读取纯真IP数据库,很好得代码
java 读取纯真IP数据库 最新数据库 下载后导入到eclipse 可直接运行
纯真ip地址数据库,点击exe文件安装,安装目录中qqwry.dat为核心文件,里面保存了世界各地的ip与地理位置信息,使用时只需要复制这个文件到项目的自定义目录,再读取这个文件即可获取ip地址对应的地理位置。纯真ip...
MFC读取纯真IP数据库,将IP转换为对应物理地址
java读取纯真IP数据库完全封装可以直接使用
java读取纯真数据库,源码来自于lumaQQ
这是一个读取纯真IP数据库的公用组件接口,通过luma的《纯真IP数据库格式详解》了解了纯真IP数据库数据格式,并且基于网络上的一个IPLocation.dll源码的基础改编而来。
该源代码不同于网上最普遍的读取纯真 IP 数据库的代码。本人在参考多分网上代码因不满意,所以重写编写了本代码。 网上代码一般是直接使用文件流,通过移动文件流指针(即更改 Stream.Position 属性值)搜索 IP 地址...
本模块代码是针对在 2011 年在 CSDN 论坛个发布的“最新 NET 读取纯真IP数据库代码(C#)”源码,做了一次升级,这次升级不是简单的修补,是本人精心的重写,现在只需要 5 分哦,您值得拥有!该源代码不同于网上的...
纯真ip数据库读取,读取最新格式和其他格式纯真数据库,带有源码。可以直接调用,格式相当简单。相应的纯真数据库到相关网站下载~
直接导入eclipse, 运行com.lumaqq.test下Test.java主函数即可 方便进行ip的查询操作 数据库文件版本为:2008年10月15日
2017最新读取纯真IP数据库代码(C#).下载前面的一个 要10分。。给分少的兄弟。。 看了下代码 是aspx的 。兄弟们可以参考 改成form的
主要介绍了php读取纯真ip数据库显示详细信息的使用示例,大家参考使用吧
纯真IP数据库QQwry.dat可供网站、软件等相关程序语言调用读取指定IP的城市地区信息
asp.net 通过IP 获取地址 IP库是纯真数据库
IP 地理定位帮助自己以最简单的方式来保护隐私,不过除此之外也有一起其他的用处,比如使用ip代理来模拟自己的定位等等,在软件开发的过程中有时候也会用到纯真ip数据库来更换ip,今天备份一下C#读取纯真ip数据库的...
教你如何读取+QQ+纯真+IP+数据库 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
用C++编写的纯真IP数据库查询程序,查询部分封装成独立的类供调用,有测试Demo。开发环境:Visual Studio 2010