如何使boost asio async_accept仅接受一个连接?

如何使boost asio async_accept仅接受一个连接?,boost,boost-asio,Boost,Boost Asio,我正在使用中的示例 HTTP服务器 如何将示例更改为一次只接受一个连接。这就是在上一个连接完成后接受下一个连接 谢谢我用了: if (0 == connection_manager_.size()) { connection_manager_.start(std::make_shared<connection>( std::move(socket_), connection_man

我正在使用中的示例 HTTP服务器

如何将示例更改为一次只接受一个连接。这就是在上一个连接完成后接受下一个连接

谢谢

我用了:

            if (0 == connection_manager_.size()) {
            connection_manager_.start(std::make_shared<connection>(
                            std::move(socket_), connection_manager_, request_handler_));
            } else {
                std::move(socket_).close();
            }
if(0==connection\u manager\uu.size()){
连接管理器启动(标准::使共享(
std::move(套接字)、连接管理器、请求处理程序);
}否则{
标准::移动(套接字)。关闭();
}

服务器::do_accept
中,只需do包含最后一行(即启动另一个async_accept)

void服务器::do_accept()
{
接受程序异步接受(套接字),
[this](boost::system::error_code ec)
{
//检查在此之前服务器是否被信号停止
//完成处理程序有机会运行。
如果(!acceptor_u.is_open())
{
返回;
}
如果(!ec)
{
连接管理器启动(标准::使共享(
std::move(套接字)、连接管理器、请求处理程序);
}
//do_accept();//删除此行
});
}

正如您所看到的,这已经用于在关闭时停止接受连接。

这严格来说并不能回答这个问题,因为连接仍然会被接受。我会尝试。但是…从哪里开始呢?在上次接受的套接字完成后,我想再次接受另一个套接字。
void server::do_accept()
{
  acceptor_.async_accept(socket_,
      [this](boost::system::error_code ec)
      {
        // Check whether the server was stopped by a signal before this
        // completion handler had a chance to run.
        if (!acceptor_.is_open())
        {
          return;
        }

        if (!ec)
        {
          connection_manager_.start(std::make_shared<connection>(
              std::move(socket_), connection_manager_, request_handler_));
        }

        // do_accept(); // REMOVE THIS LINE
      });
}