我正在关注此处的boost文档中的示例客户端:
http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/http/client/sync_client.cpp
我发现我得到的回应只是部分回答。我正在观察的症状在这段代码中:
while (boost::asio::read(socket, response,
boost::asio::transfer_at_least(1), error)) {
std::cout << &response;
}
尽管我的回复的内容长度是2947795
,但上面的while循环只在读取了261980
的响应时退出,而不是全部。
这段代码是否会导致它在结束前停止读取并退出循环?
更新1
如果我将请求的连接更改为Connection: keep-alive
,我会返回完整的响应主体,但它永远不会退出while循环。我是否需要编写自己的检查以查看读取长度==
内容长度,然后退出?
更新2
我发现奇怪的是,while循环总是在每次读取相同数量(即261980
)后退出。