C++ 使用boost::asio将解析处理程序绑定到解析程序异步解析

C++ 使用boost::asio将解析处理程序绑定到解析程序异步解析,c++,boost,boost-asio,C++,Boost,Boost Asio,我有这个密码。如何将我的方法resolve_处理程序与预期的迭代器和错误参数绑定?这是中断连接逻辑的正确方法吗 void FileClient::start() { try { boost::asio::ip::tcp::resolver::query query("ip", "port"); resolver_.async_resolve(query, boost::bind( &FileClient::resolve

我有这个密码。如何将我的方法resolve_处理程序与预期的迭代器和错误参数绑定?这是中断连接逻辑的正确方法吗

void FileClient::start() 
{ 
    try {
        boost::asio::ip::tcp::resolver::query query("ip", "port");
        resolver_.async_resolve(query, boost::bind(
            &FileClient::resolve_handler, this
        ));
    }
    catch (std::exception& e)
    {
        std::cerr << "Exception: " << e.what() << "\n";
    }
}

void FileClient::resolve_handler(const boost::system::error_code &_error,
                                 boost::asio::ip::tcp::resolver::iterator _it)
{ 
    if (!_error) 
        socket_.async_connect(*_it, boost::bind(
            &FileClient::connect_handler, this, boost::asio::placeholders::error
        ));
    else 
        std::cerr << "resolve_handler error: " << _error << std::endl; 
}
void FileClient::start()
{ 
试一试{
boost::asio::ip::tcp::解析器::查询查询(“ip”、“端口”);
解析程序\异步\解析(查询,boost::bind(
&FileClient::resolve_处理程序,此
));
}
捕获(标准::异常&e)
{

std::cerr例如,boost.asio教程中有来自以下内容的示例

void handle\u resolve(const boost::system::error\u code&err,
tcp::resolver::迭代器端点(迭代器)
{
如果(!err)
{
//尝试连接到列表中的第一个终结点。每个终结点
//将一直尝试,直到成功建立连接。
tcp::endpoint=*endpoint_迭代器;
套接字异步连接(端点,
boost::bind(&client::handle_connect),这,
boost::asio::占位符::错误,++endpoint_迭代器);
}
其他的
{

std::行得通吗,不知道我为什么被困在这里,谢谢(看来我无法接受或关闭qn)。
tcp::resolver::query query(server, "http");
    resolver_.async_resolve(query,
        boost::bind(&client::handle_resolve, this,
          boost::asio::placeholders::error,
          boost::asio::placeholders::iterator));
void handle_resolve(const boost::system::error_code& err,
                    tcp::resolver::iterator endpoint_iterator)
{
    if (!err)
    {
        // Attempt a connection to the first endpoint in the list. Each endpoint
        // will be tried until we successfully establish a connection.
         tcp::endpoint endpoint = *endpoint_iterator;
         socket_.async_connect(endpoint,
                         boost::bind(&client::handle_connect, this,
                         boost::asio::placeholders::error, ++endpoint_iterator));
    }
    else
    {
        std::cout << "Error: " << err.message() << "\n";
    }
}