Asio独立异步连接未在连接后调用回调



我遇到的问题是asio::async_connect不会调用其回调处理程序(在本例中为foo(,即使连接已经在服务器端建立。这让我很困惑,因为async_read/write按预期工作。

以下是的简化示例

void foo(const asio::error_code& ec)
{
std::cout << "Foo called" << std::endl;
}
int main()
{
asio::io_service io;
asio::io_service::work work(io);
asio::ip::tcp::socket socket(io);
asio::ip::tcp::endpoint ep(asio::ip::address::from_string("127.0.0.1"), 5454);
socket.async_connect(ep, std::bind(&foo, std::placeholders::_1));
io.run();
return 0;
}

问题是我有两个同名的不同io_service对象,并且在错误的对象上调用io.run((。当我在一个独立的案例中测试它时,代码片段实际上起了作用。

相关内容

最新更新