提升 asio 回声服务器示例中的黑客或错误?

Hack or bug in boost asio echo server example?

本文关键字:黑客 错误 asio 回声 服务器 提升      更新时间:2023-10-16

我正在尝试理解来自boost asio的echo服务器示例。而且我不明白怎么可能从同一个物体移动很多次。对不起,如果我只是错过了一些简单的事情。

这是启动时调用的方法。socket_是班级的一员。正如我所看到的,每次建立新连接时它都会移动。请看一下示例以了解整个画面。

void do_accept()
{
acceptor_.async_accept(socket_,
[this](boost::system::error_code ec)
{
if (!ec)
{
std::make_shared<session>(std::move(socket_))->start();
}
do_accept();
});
}

感谢安德烈亚斯,我查看了 asio 套接字的移动构造函数。我以前应该这样做。答案很简单:

移动后,移出对象处于与 使用 @c basic_stream_socket(io_service&( 构造函数构造。