Обратный поиск DNS с Asio - PullRequest
       36

Обратный поиск DNS с Asio

8 голосов
/ 20 января 2012

Я хотел бы сделать обратный поиск DNS (вернуть имя хоста для данного IP-адреса) с asio, но я не могу выяснить, какие компоненты мне нужны для этого.Документация Asio относится к ip::basic_resolver::resolve, но необходимо endpoint_type, и я не знаю, как его использовать.
Может кто-нибудь опубликовать или сослаться на пример?


РЕДАКТИРОВАТЬ:
С помощью Иоахима Пилеборга я смог выполнить задачу.Необходимый код (Minumin без обработки ошибок):

#include <asio.hpp>
#include <string>
#include <iostream>

int main()
{
    asio::ip::address_v4 ipa = asio::ip::address_v4::from_string("8.8.8.8");    
    asio::ip::tcp::endpoint ep;
    ep.address(ipa);

    asio::io_service io_service;
    asio::ip::tcp::resolver resolver(io_service);
    asio::ip::tcp::resolver::iterator destination = resolver.resolve(ep);

    std::cout << destination->host_name() << std::endl;

    return 0;
}

1 Ответ

7 голосов
/ 20 января 2012

Я не использовал распознаватель в Boost ASIO, но, читая справочную документацию, кажется, вам не следует использовать ip::basic_resolver напрямую.Вместо этого вы должны использовать, например, ip::tcp::resolver, в этом случае endpoint является экземпляром ip::tcp::endpoint.

Редактировать

Поскольку каждый хост может иметь несколько имен хостов, решение OPs можетрасширено так:

asio::ip::tcp::resolver::iterator itr = resolver.resolve(ep);
asio::ip::tcp::resolver::iterator end;

for (int i = 1; itr != end; itr++, i++)
    std::cout << "hostname #" << i << ": " << itr->host_name() << '\n';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...