boost asio echo服务器示例中的黑客或错误?

时间:2018-05-01 20:10:54

标签: c++ boost boost-asio move

我试图了解来自boost asio的echo server example。我无法如何从同一个对象移动多次。对不起,如果我错过了一些简单的事情。

这是一个在启动时调用的方法。 socket_是班级成员。正如我所看到的那样,每次建立新连接时都会移动它。请查看example以了解整体情况。

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();
      });
}

1 个答案:

答案 0 :(得分:1)

感谢Andreas我看了一下asio socket的move构造函数。我以前应该这样做。答案很简单:

  

移动后,移动的对象处于相同的状态      使用@c basic_stream_socket(io_service&amp;)构造函数构造。