代码之家  ›  专栏  ›  技术社区  ›  ruipacheco

什么替换了asio::tcp::resolver::query?

  •  3
  • ruipacheco  · 技术社区  · 6 年前

    我目前正在尝试构建一个没有任何不推荐的方法的项目,并且遇到了冲突解决程序的问题。我以前的代码看起来像这样:

    const asio::ip::tcp::resolver::query query(params.host, std::to_string(params.port));
          m_resolver.async_resolve(query, [&](const std::error_code &ec_, asio::ip::tcp::resolver::iterator iter) {
            if (ec_) {
              ec = ec_;
              return;
            }
            while (iter != asio::ip::tcp::resolver::iterator()) {
              m_socket.reset(new asio::generic::stream_protocol::socket(m_service));
              m_socket->async_connect((*iter++).endpoint(), [&](const std::error_code &err_code) {
                if (err_code) {
                  ec = err_code;
                  return;
                }
                connected = true;
              });
            };
          });
    

    但现在,asio说asio::tcp::resolver::query已被弃用。主机名解析现在如何完成?

    1 回复  |  直到 6 年前
        1
  •  2
  •   sehe    6 年前

    没有什么能取代它。看看这个 documentation of [async_]resolve 改为使用什么:

    enter image description here

    基本上,“参数对象”是“内联的”来分离参数。