我在http://www.boost.org/doc/libs/1_58_0/doc/html/boost_asio/examples/cpp11_examples.html中使用了这个例子 HTTP服务器
如何将示例更改为一次只接受一个连接。这只是在前一个连接完成时接受下一个连接。
由于
答案 0 :(得分:1)
在server::do_accept
中,只需不包含最后一行(即启动另一行async_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
});
}
正如您所看到的,已经用于停止接受关闭时的连接。
答案 1 :(得分:0)
我做过:
if (0 == connection_manager_.size()) {
connection_manager_.start(std::make_shared<connection>(
std::move(socket_), connection_manager_, request_handler_));
} else {
std::move(socket_).close();
}