IP地址庫解析


國內私募機構九鼎控股打造APP,來就送 20元現金領取地址: http://jdb.jiudingcapital.com/phone.html
內部邀請碼: C8E245J (不寫邀請碼,沒有現金送)
國內私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統掛牌的公眾公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

感謝luma qq 關於地址庫的格式描述:

http://lumaqq.linuxsir.org/article/qqwry_format_detail.html

 

 

因客戶需求,需要分析用戶數據,需要知道用戶訪問時的國家信息,目前僅僅知道ip地址,如何知道國家信息呢?第一反應就是找個ip地址庫。對照查找下即可。

想想國內的ip地址庫,比較全面的算是顯IP的QX版本了。中間用了ip地址庫。可以分析這個庫文件。OK,思路確定,Go

1、  下載顯IP版的地址庫

2、  分析庫文件格式。 格式說明:http://lumaqq.linuxsir.org/article/qqwry_format_detail.html

3、  根據格式說明,編寫代碼

 

貼出設計

關鍵類及說明:

BaseDataReader

基礎的數據讀取類

DirectReader

直接讀取數據的模式實現

Model1Reader

模式1讀取器

Model2Reader

模式2讀取器

IPRecordFactory

讀取器的創建工廠

 

 

ISearch

搜索的接口

BinarySearch

二分法搜索的實現

FullSearch

全文件搜素

 

寫個Demo測試下

 

注意事項:

1、  ip字符串轉化為整形時,需要注意字節序。

.net framework 默認為 litter-endian

ip 字符串的現實方式是 big-endian

2、  int 與 uint 是由區別的

看到這個,可能你會笑,誰不知道呢?嘿嘿,以前我就不知道,或者說是知道他們的區別,但不知道各自應用場景。

經常寫應用的人是不會注意這些細節問題的,只要應用運行正常就可以了,不會關注底層的具體使用什么數據類型。

這次寫代碼的過程中,一開始都都是使用 int,調試到最后才發現大數據轉化為 int 時,居然變成了 –xxxxxxx (負數)了,與實際的有差別,才反應過來,原來如此。

3、  算法的使用。

因 .net framework 提供的大部分的內存數據結構(Hashtable,list,Dictionary等),經常使用他們構建數據,導致要寫基本的算法時,頭大了。最后才慢慢的想起來,磕磕碰碰寫完了。此時深深的體會到,算法的威力(編程的內功)

4、  堅持就是勝利。有想法就盡快付諸行動,存在腦子的東西,永遠是不會被他人知曉的。

 

貼上測試代碼:

ipqueryDemo 請在如下地址下載 qqwry.dat ,放置到 bin 目錄下即可,切記切記!

ip 庫下載地址:   http://www.onlinedown.net/soft/19051.htm

 

完整Demo:

ipQuery-(完整版,包括qqwry.dat).7z

ipQuery庫使用說明:

http://www.cnblogs.com/AloneSword/archive/2012/06/19/2555380.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM