使用纯真IP数据库定位IP地址所在地

目前,关于IP地址的数据库,用得比较多的就是纯真数据库了,关于纯真数据库的具体格式,可以从这里找到,

http://lumaqq.linuxsir.org/article/qqwry_format_detail.htm"

也可以在附件里下载.

下载纯真数据库格式(此PDF即为前面的网站所提供的文档)

下载Demo工程(整个工程的源代码)

 

下载SourceCode(核心类的源代码)

 

纯真数据库有点小大,压缩后大于2MB了,无法上传,网上也到处都是。需要也可联系我。


在开发中,我发现这个格式解释好像漏了一种情况,我是在写代码的时候发现的:

  新加模式

在查询IP地址129.114.3.90时遇到了这样一种情况。 加上这种格式后的结果为:

image

如果按文档中的如下格式查下去(如下所示),将无法得到CZ88.NET的结果,这个值将是个乱码,跟踪发现其值为ASCII 17.

 

将这一个结果与网上的其它查询结果对比,证明此IP的信息确实应该为美国,CZ88.NET

 

源代码压缩包中包括了四个文件,也就是两个类。其中CLocalFile是我从MFC库中的提取的CFile的代码,去掉了一些用到不到功能。之屔以这样做是为了方便不想因为不想因为这个小的功能而引用MFC。CIpAddressEx就是主角了,他会从纯真数据库中查询指定的IP地址的详细信息。使用时请确认IP数据库存在,在CIPAddressEx中用一个宏定义了ip地圵的路径.

1#define QQ_WRY _T("E:\\Project\\IpLoacate\\debug\\QQWry.Dat")

由于这只是一个Demo,所以采用这种方式配置。实际开发中应该统一管理配置。

Demo工程文件是一个MFC的对话框工程,这个工程很简单,就是提供一个输入框,让用户输入数据,然后调用CIPAddressEx的功能显示查询结果.

 

代码在Warning Level 3下Disable warning 4267后,为0 Error,0 Warning.

 

Bug再所难免,欢迎指正!

 

posted @ 2009-04-03 02:26  新起点_不能用  阅读(2378)  评论(3编辑  收藏  举报