我按照 Boost.Asio 教程实现了一个简单的 TCP 客户端,但我在第一步被阻止,boost::asio::ip::tcp::resolver::async_resolve
不起作用,永远不会调用 ResolverHandler:
void client::start()
{
socket_.reset(new boost::asio::ip::tcp::socket(io_service_));
// Start an asynchronous resolve to translate the server and service names
// into a list of endpoints.
tcp::resolver::query query(server_address_, server_port_);
resolver_.async_resolve(query,
boost::bind(&client::handle_resolve,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::iterator));
}
如上所示源代码,我创建了一个io_service
, a socket
, aresolver
和一个解析器query
对象,然后调用resolver_.async_resolve()
方法,但是 ResolverHandlerclient::handle_resolve
几乎从不被调用,有时在应用程序第一次启动时, ResolverHandler 可能会被调用一两次,但仅此而已。
我阅读了官方文档,但一无所获。有什么建议吗?