全部产品
云市场
云游戏

Linux环境C++版本

更新时间:2020-09-08 16:22:21

环境准备

  • 目前只支持Linux x86_64 (64-bit)平台(Redhat/Centos)

  • 需要支持c++11标准的c++编译器

  • Botan2安装

    注意

    版本要求:2.13.0或以上版本。

    • 通过包管理工具安装:

      • centos:yum install -y botan2

      • ubuntu:apt-get install -y libbotan-2

    • 通过源码安装(推荐):

      wget https://github.com/randombit/botan/archive/2.13.0.tar.gz
      tar -xvzf 2.13.0.tar.gz 
      ./configure.py
      make
      make instal

下载SDK

如已购买IP地理位置库(离线版)商品,可进入实例详情,下载以下三个文件

  • 离线数据库(数据文件)
  • 授权证书文件(license)

  • SDK(C++语言)

    • 头文件geoipclient.hpp

    • 动态链接库libgeoipclient.so

    • 静态链接库libgeoipclient.a

注意 续费、升级商品套餐一定要同步更新license证书文件,如果license证书过期,则SDK会直接不可用。

安装SDK

1.将下载的头文件geoipclient.hpp拷贝到项目的头文件目录下

2.根据需要把libgeoipclient.so libgeoipclient.a 拷贝到/usr/local/lib

3.设置环境变量export LD_LIBRARY_PATH=/usr/local/lib

注意 环境变量一定要设置好,不然无法查找到动态链接库 libgeoipclient.so 或静态链接库 libgeoipclient.a

快速入门

重要类介绍

    • license_path:license路径
    • ipdata_path:data数据路径
    • ip:被查询IP

使用方法

  1. 将加载字段、license文件路径、数据文件路径封装成一个 geoipclient
  2. 实例化 GeoIPClient
  3. 通过 client.search(String ip) 方法来检索ip的地址位置等相关信息,返回的数据为json格式,值不在时用空字符串 "" 代替。

例子程序

  • libgeoipclient主要封装了c++类GeoIPClient,暴漏search方法,该方法返回对应ip地址的信息,以json的格式返回。

  • 将下载的头文件geoipclient.hpp、离线数据库(数据文件)、授权证书文件(license)拷到example.cpp相同的目录下

异常说明:

1.如果license文件和ip地址数据文件有问题,会抛出异常

2.如果查询频率超过限速,会直接返回空字符串

调用实例:

#include <iostream>
#include "geoipclient.hpp"
using namespace alibaba::dns;
int main() {    
    try {
        //第一个参数是授权文件的路径,第二个参数是离线数据库文件路径  
        GeoIPClient client("client.lic", "ipv4.dex");
        std::cout << client.search("47.116.2.4") << std::endl;;
    }
    catch (std::exception& e) {
        std::cout << "get error:" << e.what() << std::endl;
    }
    return 0;
}
  • 在目录下执行

[root@localhost ~]#g++ -o testgeoipclinet example.cpp -I. -lgeoipclient -lbotan-2 -std=c++11

  • 执行及查看查询结果

[root@localhost ~]#./testgeoipclinet

{
    "country": "中国",
    "city": "上海市",
    "isp": "阿里云",
    "province_en": "Shanghai",
    "latitude": "31.2459066",
    "county": "浦东新区",
    "country_en": "China",
    "city_en": "Shanghai",
    "country_code": "CN",
    "routes": "中国电信/中国联通/中国移动/中国铁通/中国教育网",
    "province": "上海市",
    "isp_code": "1000323",
    "longitude": "121.5677066"
}

附件

字段含义:

字段

含义

country

国家

country_code

国家代码

country_en

国家英文

province

省/州

province_en

省/州英文

county

区/县

city

城市

city_en

城市英文

isp

运营商

isp_code

运营商代码

routes

运营商线路

longitude

经度

latitude

纬度