gpt4 book ai didi

c++ - boost.asio boost::asio::ip::tcp::resolver::async_resolve 不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 01:50:32 25 4
gpt4 key购买 nike

我按照 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、一个socket、一个resolver和一个解析器query 对象,然后调用 resolver_.async_resolve() 方法,但是 ResolverHandler client::handle_resolve 几乎从不被调用,有时在应用程序第一次启动时, ResolverHandler 可能被调用一两次,但之后仅此而已。

我阅读了官方文档,但一无所获。有什么建议吗?

最佳答案

如果完成处理程序没有被调用——很可能你没有正确运行 io_service:例如。它的 run 循环可能被其他一些没有返回的处理程序阻塞,或者它可能由于缺少工作等而退出。

关于c++ - boost.asio boost::asio::ip::tcp::resolver::async_resolve 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14908860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com