灵感的来临,没有任何预兆;灵感的消失,也不会有告别仪式;用文字记下她们吧,让灵感永存……

查询纯真IP数据库(C++和Python组合)

davies 发表于 2005 年 05 月 18 日

用C++重写了一遍,速度果然快了很多
似乎用C++写Python的扩展比较麻烦,可能要改成C

Python可以使用管道来与外部程序进行交互,使用起来跟读文件类似。比如:

os.popen() 就是打开一个由命令 cmd 创建的管道,得到的结果就是 清华大学网络中心,即 166.111.8.238对应的地址,它是iplocate的输出。

还可以用popen2,popen3,popen4打开其他IO流。

C++版本的源代码在这里 ,纯真IP数据库在这里 ,可以到它的主页 上下载更新版本。

网友留言:

Re: 查询纯真IP数据库(C++和Python组合)1. zcj 发表于 2006 年 03 月 6 日 8:56 p.m.

师兄好.

Re: 查询纯真IP数据库(C++和Python组合)2. davies 发表于 2006 年 03 月 6 日 10:31 p.m.

你是哪位?

Re: 查询纯真IP数据库(C++和Python组合)3. 代码罐头 发表于 2006 年 03 月 8 日 10:29 p.m.

你好。很感谢你写出了这篇文章。帮助了我不少
不过代码中有一个bug
导致取出的字符串有问题
在readFullAddr函数中
if ( byte == REDIRECT_MODE_2 ) {
int p = 0;
fread(&p,1,3,dbfile);
address = readString(p);
fseek(dbfile,p+4,SEEK_SET);
这段中
最后一句fseek(dbfile,p+4,SEEK_SET);
应改为
fseek(dbfile,countryOffset+4,SEEK_SET);
否则取出的区域地址将会是国家地址的略过4个字符后的内容
比如原来应该取出 “中国上海 电信adsl”
现在会变成 “中国上海 上海”

Re: 查询纯真IP数据库(C++和Python组合)4. davies 发表于 2006 年 03 月 8 日 11:45 p.m.

该bug已经修正,多谢反馈:-)

我来留言

称呼:

留言: