linux 查询ip归属地的工具,Linux下查询IP归属地的实现
Linux下查询IP归属地的实现
以下是我的实现:使用的时候很简单:
点击(此处)折叠或打开
/**
*1.调用qqwry_init_parser创建一个qqwry_parser_t类型的解析器
*2.初始化一个存放查询结果信息的qqwry_record
*3.调用qqwry_querey_iprecord查询指定ip的归属地
*4.调用qqwry_release_parser释放资源
**/
qqwry_parser_t parser = qqwry_init_parser("/root/QQWry.Dat", VERBOSE_ENABLE,
CACHE_ENABLE, 1);
qqwry_record qr = QQWARY_RECORD_INITIALIZER();
qqwry_querey_iprecord(parser, "61.172.201.195", &qr);
qqwry_release_parser(parser);
这是一个初级版本,还没有经过大量的测试,可能存在很多不完备的地方,希望亲们试用了之后,能够提出改进意见啊。
qqwry_utils.h
点击(此处)折叠或打开
/*
* qqwry_utils.h
*
* Created on: 2012-4-26
* Author: zhanlin
*/
#ifndef QQWRY_UTILS_H_
#define QQWRY_UTILS_H_
int ipaddr_to_bytes(const char *src, char *dest);
void bytes_to_ipaddr(const char *src, char *dest);
inline int32_t char3_to_int32(const char *buf);
#endif /* QQWRY_UTILS_H_ */
qqwry_utils.c
点击(此处)折叠或打开
/*
* qqwry_utils.c
*
* Created on: 2012-4-26
* Author: zhanlin
*/
#include
#include
#include
#include
#include
#include "qqwry_utils.h"
int ipaddr_to_bytes(const char *src, char *dest) {
int n;
char *newstr;
char *sub;
int i = 0;
n = strlen(src);
newstr = (char *) malloc(n + 1);
if (newstr == NULL) {
return -1;
}
memcpy(newstr, src, n);
*(newstr + n) = 0;
sub = strtok(newstr, ".");
while (sub != NULL) {
// printf("%s atoi %dn", sub, atoi(sub));
*(dest + i) = (char) atoi(sub);
sub = strtok(NULL, ".");
i++;
}
free(newstr);
return 0;
}
void bytes_to_ipaddr(const char *src, char *dest) {
sprintf(dest, "%c.%c.%c.%c", src[0], src[1], src[2], src[3]);
}
inline int32_t char3_to_int32(const char *buf) {
int32_t i = 0;
memcpy(&i, buf, 3);
return i;
}
qqwry_types.h
点击(此处)折叠或打开
/*
* qqwry_types.h
*
* Created on: 2012-4-26
* Author: zhanlin
*/
#ifndef QQWRY_TYPES_H_
#define QQWRY_TYPES_H_
#include
#include
#include
#include
#include
#pragma pack(0)
typedef struct _qqwry_header {
u_int32_t qh_idx_start;
u_int32_t qh_idx_end;
} qqwry_header, *qqwry_header_t;
#endif /* QQWRY_TYPES_H_ */
qqwry_parser.h
点击(此处)折叠或打开
/*
* qqwry_parser.h
*
* Created on: 2012-4-26
* Author: zhanlin
*/
#ifndef QQWRY_PARSER_H_
#define QQWRY_PARSER_H_
#include
enum {
VERBOSE_DISABLE = 0, VERBOSE_ENABLE = 1
};
enum {
CACHE_DISABLE = 0, CACHE_ENABLE = 1
};
typedef struct _qqwry_record {
char qr_ipaddr[20];
int32_t qr_ip;
char qr_bigzone[1024];
char qr_smallzone[1024];
} qqwry_record, *qqwry_record_t;
#define QQWARY_RECORD_INITIALIZER() {
.qr_ipaddr = {0},
.qr_ip = 0,
.qr_bigzone = {0},
.qr_smallzone = {0},
}
struct _qqwry_parser;
typedef struct _qqwry_parser qqwry_parser, *qqwry_parser_t;
qqwry_parser_t qqwry_init_parser(const char *dbpath, int verb, int cache,
int loaddb);
int qqwry_load_db(qqwry_parser_t parser);
void qqwry_unload_db(qqwry_parser_t parser);
int qqwry_querey_iprecord(qqwry_parser_t parser, const char *ipaddr, qqwry_record_t qr);
void qqwry_release_parser(qqwry_parser_t parser);
int load_db_to_mem(qqwry_parser_t parser);
#endif /* QQWRY_PARSER_H_ */
qqwry_types.c
点击(此处)折叠或打开
/*
* qqwry_types.c
*
* Created on: 2012-4-26
* Author: root
*/
linux 查询ip归属地的工具,Linux下查询IP归属地的实现相关推荐
- NetDevOps实践(一)华为CE交换机:基线检查——本机发往日志服务器的IP与设备的LoopBack 0下的IP进行对比
本文说明: 1.本篇文章部分借鉴了弈心<网路行者>实验思想,推荐移步阅读. 2.特别鸣谢:朱嘉盛,在我初学Python的道路上给予无私的帮助.以及他专栏内的文章给了我不少的灵感. 3.感谢 ...
- linux 查询ip归属地的工具,Linux 通过shell查询ip归属地(curl请求转码)
root@kickseed:~# ping www.baidu.com #用百度进行测试获取百度IP ...
- linux系统里常用的抓图工具,Linux系统下屏幕截图常用方法
电脑操作系统中一般都有自带截图快捷键,而很多软件业有截图的功能,那么Linux操作系统要如何截图呢?下面小编就给大家介绍下Ubuntu下如何截图. 在linux系统上怎么截图: 键盘上的截图键还可以用 ...
- linux上用的端口转发工具,linux下最简单好用的的端口转发工具
linux下最简单好用的的端口转发工具 解压安装 tar zxvf rinetd.tar.gz make make install 编辑配置 vi /etc/rinetd.conf 0.0.0.0 8 ...
- linux上用的端口转发工具,Linux中的快速端口转发工具—rinetd
这两天和同事讨论问题的时候知道了一个很好用的NAT工具-rinetd,它是由c实现的一个短小.实用的NTA转发工具,它的官网是在:http://www.boutell.com/rinetd/[root ...
- linux开源炫酷命令行工具,Linux上超酷的命令行扩展工具Oh My Zsh
Oh My Zsh 是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式.它基于 zsh 命令行,提供了主题配置,插件机制,已经内置的便捷操作.给我们一种全新的方式使用命 ...
- linux系统里常用的抓图工具,linux下很棒的抓图工具——scrot
这次重装FC5,很谨慎了.对欲安装的每件工具都仔细斟酌了一番.在屏幕抓取工具的选择上,我首选gimp,颇研究了一番,但gimp用于抓图总觉得大材小用,而且也不很方便,譬如无法进行区域交互抓取,只能抓窗 ...
- linux系统里常用的抓图工具,LINUX下的抓图工具——SCROT
源码包 [安装] ./configure --prefix=/usr/local,可能会出错,提示找不到giblib库,apt-get install giblib即可解决.因为scrot是基于iml ...
- Linux安装VNC远程桌面管理工具
Linux安装VNC远程桌面管理工具 Linux远程桌面连接方式 虽说高级的Linux运维工程师管理Linux时都是使用"高大上"的命令行操作,可是在有些时候例如Oracle数据库 ...
- 用linux如何用vi编写c程序,linux中VI编写C程序。。。
在linux中编写C程序时不像编写shell那样开头要#!/bin/bash,但是在C程序中要指定头文件(头文件是指输入输出,宏等,而且要首先声明,也是必须要开始就声明的) 写好C代码后要给C文件赋予 ...
最新文章
- Python案例:使用XPath的爬虫
- 【Linux入门到精通系列讲解】Linux如何创建和删除swap分区
- 【参会指南】神策 2020 数据驱动用户大会,10 月 13 日将重磅开幕!
- 子页面刷新父页面,避免弹出重复提交窗口
- StarLake:汇量科技云原生数据湖的探索和实践
- python项目之当当网
- jmeter 安装详解
- 十年MFC经历认识的Microsoft技术
- amr-nb linux 编译安装包,3GPP最新版本amr-nb编解码源代码
- 关于《Python绝技:运用Python成为顶级黑客》的学习笔记
- 动态表单 mysql_【mysql】动态表单应该如何设计数据库?
- 惠普1005打印机自检页_hp1005打印机自检报告.docx
- tf-faster-rcnn在cpu下运行demo、测试和训练自己的数据集
- Restful风格的URL请求
- 【推荐系统】【论文阅读笔记】【survey】A Survey on Session-based Recommender Systems基于会话的推荐系统综述
- 恶意代码分析实战Lab3-2
- Your ApplicationContext is unlikely tostart due to a @ComponentScan of the defau
- 蓝桥ROS云课→一键配置←f1tenth和PID绕圈
- 深度学习:GAN优化方法-DCGAN案例
- 易语言之超级列表框的使用及json解析
热门文章
- 黑苹果音频卡顿_DXOMARK公布无线音箱音质基准:苹果华为Sonos上榜
- php导出页面为pdf文件大小,PHP HTML 生成 PDF|php快速导出pdf文件
- 使用iText读取PDF文件
- 最近在关注浏览器,先转一篇游戏浏览器的评测。
- Python的图像处理库Pillow
- 第十七届时尚COSMO美容大奖盛大启动 亮点多维度升级,2020一起“美就出圈”
- Windows操作系统注册表registry
- 2019年最新手机CPU处理器性能排行天梯图
- 创建 C++ WinRT 组件
- 用 Mac 输入罗马数字