什么时候调用boost :: asio :: async_read_until的处理程序?

时间:2015-04-13 08:48:13

标签: c++ asynchronous boost handler

我是一名新手。

我正在测试boost异步客户端。参考代码如下。

http://think-async.com/Asio/boost_asio_1_5_3/doc/html/boost_asio/example/http/client/async_client.cpp

如果"Connection: close"标头值存在,代码就完成了。但是,当我在HTTP请求中省略"handle_read_status_line"标头时,从未调用"Conneciton: close"处理程序。 (只有在TCP连接关闭时才会调用所有接收HTTP响应的处理程序。)

在我看来,应该调用"handle_read_status_line",因为无论"\\r\\n"标头如何,HTTP响应始终都包含"Connection"

当调用async_read_until的处理程序时,有人可以向我解释一下吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

通常,async_read_until会在符合MatchCondition时返回。

该示例假定连接是按请求进行的。它非常明确:

  // Start reading remaining data until EOF.
  boost::asio::async_read(socket_, response_,
      boost::asio::transfer_at_least(1),
      boost::bind(&client::handle_read_content, this,
        boost::asio::placeholders::error));