16. tutorial boost asio --- resolução de nome de domínio

Normalmente usamos hostname para identificar o servidor remoto. Mas para nos conectarmos ao servidor, precisamos saber seu endereço IP. Para descobrir o endereço IP por trás de um nome de host específico, devemos realizar a análise. Pode haver diferentes entidades físicas que traduzem um determinado nome de host em um endereço IP: um servidor DNS remoto, seu roteador, o arquivo /etc/hosts, o serviço NETBIOS, o cache DNS do sistema operacional. No entanto, você realmente não precisa se preocupar com esses detalhes porque a API que usaremos é a mesma.

A classe usada para resolver nomes de host para endereços IP é boost::asio::ip::tcp::resolver. A função principal que precisamos é resolver::resolve ou resolver::async_resolve.

Pode haver vários endereços IP para o mesmo nome de host. Você pode escolher qualquer um deles. Este é um balanceamento de carga simples. No exemplo a seguir, analisaremos o nome de host google.com e imprimiremos os resultados na saída padrão:

#include <iostream>
#include <boost/asio.hpp>

namespace io = boost::asio;
namespace ip = io::ip;
using tcp = ip::tcp;
using error_code = boost::system::error_code;

int main()
{
    io::io_context io_context;
    error_code error;
    tcp::resolver resolver(io_context);

    tcp::resolver::results_type results = resolver.resolve("google.com", "80", error);

    for(tcp::endpoint const& endpoint : results)
    {
        std::cout << endpoint << "\n";
    }

    ret

추천

출처blog.csdn.net/Knowledgebase/article/details/133012456