python ip反查询_ip地址反查python模块编写

本文介绍了一个使用C语言编写的Python扩展模块iplocate,该模块通过调用iplookup库来实现IP地址的地理位置定位功能。文章提供了模块的源代码,并详细说明了编译和安装过程。

#include

#include "iplookup.h"

static il_db_t _g_db;

ipitem ip_lookup(const char *query)

{

const char *encoding = "UTF-8";

data_type type = text;

ipitem iphm;

il_iplookup(query, iphm, _g_db, type, encoding);

return iphm;

}

static PyObject * wrap_ip_lookup(PyObject *self, PyObject *args)

{

const char * command;

if (!PyArg_ParseTuple(args, "s", &command))//这句是把python的变量args转换成c的变量command

return NULL;

ipitem iphm = ip_lookup(command);//调用c的函数

return Py_BuildValue("(sssssss)",iphm.country ,iphm.province,iphm.city ,iphm.district,iphm.isp , iphm.type , iphm.desc);

//把c的返回值n转换成python的对象

}

// 3 方法列表

static PyMethodDef IpLocateMethods[] = {

{"ip_lookup", wrap_ip_lookup, METH_VARARGS, "locate ip address."},

{NULL, NULL, 0, NULL}

};

PyMODINIT_FUNC initiplocate(void)

{

PyObject *m = Py_InitModule("iplocate", IpLocateMethods);

const char* db_file = "/opt/iplookup/share/ip.db";

_g_db = il_open(db_file);

if (m == NULL) return;

}

编译安装:

g++ -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -fPIC -I. -I/opt

/python2.6/include/python2.6  -c iplocate.cpp  -o iplocate.o

g++  -Xlinker -export-dynamic  -pthread -shared -Wl,-O1 -Wl libiplookup_la-ip.o

libiplookup_la-iplookup.o libiplookup_la-iconv_ext.o   iplocate.o -o iplocate.so

-I /opt/python2.6/include/python2.6  -I /usr/include/

把生成的模块移到:

/opt/python2.6/lib/python2.6/lib-dynload/

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-02-02 13:47

浏览 1883

评论

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值