GeoIP for C++ 有这个库吗?

Jor*_*449 6 c++ ip country geoip maxmind

我找了又找,还是找不到 GeoIP 的 C++ 版本。我知道它有一个 C 版本,但我似乎无法让它与 Micosoft Visual Studio 2012 C++ 一起使用

我努力了:

所以,

  1. 是否存在 GeoIPC++ 版本?
  2. 是否有另一个库可以像 C++ 中的 GeoIP 一样对国家/地区进行 IP 处理?
  3. 有关于如何使用 C++ 使用 GeoIP 的教程吗?

对所有问题感到抱歉,但我看了又看,似乎找不到解决方案。

Sté*_*ane 5

虽然迟到了,但我最近为 MaxMind GeoIP 数据库编写了一个 C++ API。我没有在 Windows 下测试它,我只在 Linux 下运行它,但它绝对不是 Linux 特定的。

我称之为 GeoLite2++。您可以在这里找到它: https: //www.ccoderun.ca/GeoLite2++/api/

Ubuntu 的源 tarball 和 .deb 文件位于: https ://www.ccoderun.ca/GeoLite2PP/download/?C=M;O=D

示例源代码:

#include <GeoLite2PP.hpp>
...
GeoLite2PP::DB db( "/opt/stuff/GeoLite2-City.mmdb" );
std::string json = db.lookup( "216.58.216.163" );
std::cout << json << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出示例:

{
    "city" : 
    {
        "names" : 
        {
            "de" : "Mountain View",
            "en" : "Mountain View",
            ...
Run Code Online (Sandbox Code Playgroud)

它包括更多内容,例如获取单个字段与以 JSON 字符串形式抓取整个记录。

显示如何获取单个字段的示例:

GeoLite2PP::DB db("GeoLite2-City.mmdb");
std::string city = db.get_field( "65.44.217.6", "en",
    GeoLite2PP::VCStr { "city", "names" } );
Run Code Online (Sandbox Code Playgroud)

中心类的描述如下: https ://www.ccoderun.ca/GeoLite2++/api/classGeoLite2PP_1_1DB.html


mas*_*oud 2

GeoIP 是一个在线数据库,每天(或每月!)更新其数据。

此外,您可以拥有一个大型离线数据库来将 IP 映射到应用程序旁边的位置(并且您需要定期更新它)。

GeoIP 不绑定到特定的编程语言,您可以使用Web 服务机制连接到该数据库。只需通过 TCP/HTTP 请求连接到在线服务并检索数据。

HTTP API 要求您以 HTTP GET 或 POST 形式传递一组参数。结果以简单文本格式返回,如下所述。

我们提供多种不同的服务,每种服务提供不同数量的有关 IP 地址的信息。