【问题标题】:How to resolve host (only) using Boost.Asio?如何使用 Boost.Asio 解析主机(仅)?
【发布时间】:2009-10-04 12:31:00
【问题描述】:

根据boost::asio::ip::tcp::resolver::querydocumentation 为了解析主机它应该接收服务 也是。

如果我想解析与端口无关的主机怎么办?我该怎么做呢?应该 我指定虚拟端口?

【问题讨论】:

    标签: c++ boost boost-asio


    【解决方案1】:

    one post in the boost mailing list 中,其他人似乎是这样做的(复制、重新格式化、更改了服务号,没有别的):

    namespace bai = boost::asio::ip;
    bai::tcp::endpoint ep(bai::address_v4(0xD155AB64), 0); // 209.85.171.100:0
    boost::asio::io_service ios;
    bai::tcp::resolver resolver(ios);
    bai::tcp::resolver::iterator iter = resolver.resolve(ep);
    bai::tcp::resolver::iterator end;
    while (iter != end)
    {
      std::cerr << (*iter).host_name() << std::endl; // cg-in-f100.google.com
      ++iter;
    } 
    

    正如你所说的,这里仍然传递了一个服务,但是通过 Boost.Asio 代码的一个步骤揭示了这一点(在resolver_service.hpp,我使用的是相当旧的 1.36 版本):

    // First try resolving with the service name. If that fails try resolving
    // but allow the service to be returned as a number.
    

    所以,只需使用 0,它应该可以满足您的需求。

    【讨论】:

    • 请注意您确实使用了端口号 "ep(bai::address_v4(0xD155AB64), 80); // 209.85.171.100:80"
    • 我稍微修改了示例,希望对您有所帮助。
    猜你喜欢
    • 2011-06-08
    • 1970-01-01
    • 2011-06-18
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多