Вопрос по boost-asio, c++ – Я узнал, как получить имя хоста по IP. Просто разрешите конечную точку напрямую, используя IP-адрес

0

аюсь получить имя хоста от конечной точки UDP. Однако я не знаю, поддерживает ли boost.asio IP-> hostname преобразование. Кто-нибудь может ответить на мой вопрос?

мой учитель попросил меня сделать это. cqwrteur
Вы знаете (можете ли вы догадаться), какое "имя хоста" ожидается в результате? Знаете ли вы, как получить это имя хоста другими способами (например, какой-нибудь командой оболочки?) sehe
Мне нужно получить имя хоста на Windows и Android. Кроссплатформенность - это не 1 приоритет, который мне нужен. cqwrteur
Это не ответ на вопрос. sehe
Что бы вы назвали «именем хоста»? На практике IP-адреса могут маршрутизироваться под очень многими именами, многие из которых не контролируются стороной, владеющей сервером. sehe

Ваш Ответ

2   ответа
0
#include<asio.hpp>
#include<exception>
#include<iostream>

int main()
{
try
{
    asio::io_service io_service;
    asio::ip::udp::resolver rsv(io_service);
    for(const auto &ele : rsv.resolve(asio::ip::udp::endpoint(asio::ip::address_v4({192,168,1,163}),0)))
    {
        std::cout<<ele.host_name()<<'\n';
    }

}
catch(const std::exception &e)
{
    std::cerr<<e.what()<<'\n';
    return 1;
}
}

как получить имя хоста по IP. Просто разрешите конечную точку напрямую, используя IP-адрес

1

getnameinfo это то, что вы хотите.

addr, sizeof(addr), hostname, sizeof(hostname), NULL, NULL, 0);
Хорошо. почему библиотека asio не предоставляет для этого интерфейс C ++? cqwrteur
Это все еще API в стиле C. Также это реализовано в деталях / impl namespace, что означает, что это не публичный интерфейс. Я думаю, что библиотека asio должна предоставлять метод host_name () в классе asio :: ip. cqwrteur
Потому что нет выгоды? Кстати, этоделает достойная работа абстракцииgithub.com/chriskohlhoff/asio/blob/master/asio/include/asio/... sehe

Похожие вопросы