gpt4 book ai didi

c++ - 独立的 asio async_connect 没有触发绑定(bind)处理程序

转载 作者:行者123 更新时间:2023-11-28 04:19:49 25 4
gpt4 key购买 nike

我已经关注了 documentation and examples由 boost asio 实现提供,但在将我的客户端连接到服务器后没有任何运气。无论成功还是失败,处理程序都不会被调用。我已验证服务器正在接收并接受来自客户端的连接,但客户端没有任何指示成功的信息。

void ssl_writer::main_thread() {
using namespace std::placeholders;
using namespace asio::ip;

tcp::resolver resolver(io_context);
tcp::resolver::query query("192.168.170.115", "8591");
tcp::resolver::iterator endpointer_iterator = resolver.resolve(query);

io_context.run();

std::cout << "connecting...";
asio::async_connect(socket.lowest_layer(), endpointer_iterator, std::bind(&ssl_writer::handle_connect, this, _1));
}

//...

void ssl_writer::handle_connect(const std::error_code& error) {
if (!error) {
std::cout << "connected!";
}
else {
std::cout << "failed!";
}
}

最佳答案

io_context::run() 处理处理程序,直到没有要处理的处理程序为止。由于您尚未运行任何异步调用,因此没有处理程序,run 会立即返回。

在这个简单的示例中,您需要在 async_connect 之后调用 io_context::run(),在更复杂的程序中,您通常会创建一个工作线程来调用 io_context::run() 并创建一个 boost::asio::executor_work_guard 实例以防止 io_context 耗尽工作。

关于c++ - 独立的 asio async_connect 没有触发绑定(bind)处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55713213/

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