C++ 使用boost::asio将解析处理程序绑定到解析程序异步解析
我有这个密码。如何将我的方法resolve_处理程序与预期的迭代器和错误参数绑定?这是中断连接逻辑的正确方法吗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
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";
}
}