介绍一个C语言实现的http下载器

嵌入式技术

1372人已加入

描述

    做OTA升级功能时,能直接拿到的往往只是升级包的链接,需要我们自己去下载,这时候就需要用到http下载器,下文介绍一个C语言实现的http下载器。

功能

1、支持chunked方式传输的下载 2、被重定向时能下载重定向页面 3、要实现的接口为int http_download(char *url, char *save_path)

思路

1、解析输入的URL,分离出主机,端口号,文件路径的信息 2、解析主机的DNS 3、填充http请求的头部,给服务器发包 4、解析收到的http头,提取状态码,Content-length, Transfer-Encoding等字段信息 (1)如果是普通的头则进行接下来的正常收包流程 (2)如果状态码为302,则从头里提取出重定向地址,用新的地址重新开始下载动作 (3)如果传送方式是chunked的,则进行分段读取数据并拼接 (4)如果是404或其他状态码则打印错误信息

缺陷

太多错误处理,让代码看起来不太舒服

其他

1、如何移植到没有文件系统的系统中? 修改sava_data接口里面的保存就好了 2、如何提高下载速度?

增大读写buffer缓冲区

改为多线程,使用Range字段分段读取,最后再拼在一起

代码

 


/************************************************************
Copyright (C), 2016, Leon, All Rights Reserved.
FileName: download.c
coding: UTF-8
Description: 实现简单的http下载功能
Author: Leon
Version: 1.0
Date: 2016-12-2 1032
Function:


History:
    
 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分