ip地址反查python模块编写

通过IP地址反查归属地的python模块
业务逻辑由其它C++模块已经完成了开发。


#include <Python.h>
#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/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值