ip — GeoIP для C ++ есть ли для этого библиотека?

Я посмотрел и посмотрел, и я не вижу, чтобы найти C ++ версию GeoIP. Я знаю, что есть версия этого в C, но я не могу заставить его работать с Micosoft Visual Studio 2012 C ++

Я пытался:

Так,

  1. Существует ли версия GeoIPC ++?
  2. Есть ли еще одна библиотека, которая делает IP для страны, как GeoIP, в C ++?
  3. Есть ли учебник о том, как заставить GeoIP работать с C ++?

Извините за все вопросы, но я посмотрел и посмотрел, и я не могу найти решение.

3

Решение

GeoIP — это онлайн-база данных, которая обновляет свои данные ежедневно (или ежемесячно!).

Кроме того, у вас может быть большая автономная база данных для сопоставления IP-местоположения рядом с вашим приложением (и вам необходимо периодически обновлять ее).

GeoIP не привязан к конкретному языку программирования, вы можете подключиться к этой базе данных, используя веб-сервис механизм. Просто подключитесь к онлайн-сервису по TCP / HTTP-запросу и получите данные.

HTTP API требует, чтобы вы передавали набор параметров как HTTP GET
или ПОСТ. Результаты возвращаются в простом текстовом формате.
ниже.

Мы предлагаем несколько разных услуг, каждая из которых предоставляет разную сумму
информации об IP-адресе.

2

Другие решения

Поздно, но я недавно написал C ++ API для MaxBind GeoIP db. Я не тестировал его под Windows, я только запускал его под Linux, но он определенно не специфичен для Linux.

Я назвал это GeoLite2 ++. Вы можете найти это здесь: https://www.ccoderun.ca/GeoLite2++/api/

Исходные файлы tarball и .deb для Ubuntu находятся здесь: 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;

Пример вывода:

{
"city" :
{
"names" :
{
"de" : "Mountain View",
"en" : "Mountain View",
...

Это включает в себя больше, таких как получение отдельных полей или захват целых записей в виде строк JSON.

Пример, показывающий, как получить одно поле:

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

Центральный класс описан здесь: https://www.ccoderun.ca/GeoLite2++/api/classGeoLite2PP_1_1DB.html

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector