Linux环境C++版本

更新时间:

目前该产品在做内部调整,不支持新购、续费、升级等操作,订单有效期内可继续正常使用,本文档仅供订单期内用户参考。请留意服务到期时间,做好备选方案,感谢您的支持理解。

环境准备

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

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

  • Botan2安装

    注意

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

    • 通过包管理工具安装:

      • centos:yum install -y botan2

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

      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"
}

附件

properties 字段含义:

字段

含义

示例值

country

国家(或地区)中文

中国

country_code

国家(或地区)两位字母

CN

country_en

国家(或地区)英文

China

province

省(二级)中文

黑龙江省

province_code

省(二级)数字代码

230000

province_en

省(二级)英文/拼音

Heilongjiang

city

市(三级)中文

牡丹江市

city_code

市(三级)数字代码

231000

city_en

市(三级)英文/拼音

Mudanjiang

county

区(四级)中文

阳明区

county_code

区(四级)数字代码

231003

isp

运营商

中国联通

isp_code

运营商数字代码

100026

routes

运营商线路

中国联通

longitude

经度

129.634645

latitude

纬度

44.596328