1 需求 获取http server的图片
用http协议获取server上的图片,前面有文章使用socket直接获取http内容之一,链接如下: 简洁的c++http协议获取内容一 使用简洁的方式目的是为了减少使用其他库来放入程序,如果我们已经使用了boost的asio库,那么至少我们可以直接使用boost来获取图片。如果没有使用,读者可以看上一篇文章。
2 使用boost的asio 来获取图片,读者可以自行修正成异步获取,这里是同步获取boost的asio有很多好处,不同于其他封装,可以使用同步,异步,协程方式获取,这里使用的是同步,调用一个函数返回图片内存和图片大小,当然,读者可以修改,这里只是一个demo。代码的原理如下:
- 发送http 头部信息
- 等待接收数据,获取http头部
- 解析头部信息,获取Content-Length
- 准备内存,接收数据
- 返回数据
#include
#include
#include
#include
#include
using boost::asio::ip::tcp;
using std::string;
//这里直接搜索http的头部字符串
int split_httphead(const std::string str,std::string &k,std::string &v)
{
size_t pos = -1;
for (size_t i = 0; i
关注
打赏