Skip to content
This repository was archived by the owner on Jun 10, 2022. It is now read-only.

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

wander

基于C++的adbase框架实现的ip地址查询服务

编译与安装

./cmake.sh
cd build
make -j 12
make install
cd /usr/local/adinf/wander/bin
./wander -c ../conf/system.ini

具体实现

IP地址文本加载
1、ip地址文本部分内容如下
1.1.8.0-1.1.63.255	中国->广东->其他	449900
1.1.64.0-1.1.127.255	日本->其他->其他	999900
1.1.128.0-1.1.255.255	泰国->其他->其他	999900
1.2.0.0-1.2.1.255	中国->福建->其他	359900
1.2.2.0-1.2.2.255	中国->北京->北京	110000
1.2.5.0-1.2.5.255	中国->北京->北京	110000
1.2.6.0-1.2.7.255	中国->福建->其他	359900
1.2.8.0-1.2.8.255	中国->北京->北京	110000
2、根据ip地址区间对应的地理位置以及邮编区间将其转换为十进制整数对应区间
IP区间 十进制整数区间 地理位置 邮编
1.1.8.0-1.1.63.255 16844800-16859135 中国->广东->其他 449900
1.1.64.0-1.1.127.255 16859136-16875519 日本->其他->其他 999900
1.1.128.0-1.1.255.255 16875520-16908287 泰国->其他->其他 999900
3、将十进制的区间范围加载到内存,单个节点主要包含信息为:
变量名 意义
FIP(floorIP) 区间最小ip值
UIP(upperIP) 区间最大ip值
ZN() 地理位置
ZC(zipcode) 邮编
二分查找
ip对应的地理位置以及邮编等信息加载进入内存后,提供http接口进行地址位置查询服务,主要利用二分查找实现,具体如下图

简单使用示例


请求方式: Get

请求地址: host:port/wander/location

请求参数

"ips": string IP地址,多个ip以逗号分开

返回数据

{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "ip": "14.215.120.0",
      "location": "中国->广东->广州",
      "zipcode": "440100",
      "result": "search success"
    },
    {
      "ip": "14.215.191.2",
      "location": "中国->广东->广州",
      "zipcode": "440100",
      "result": "search success"
    },
  ]
}