做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字段分段读取,最后再拼在一起
代码
中国成功发射风云三号05星
新工具上线!sdkmgr命令行助力流水线构建
索尼PS VR独辟蹊径,抢占未来市场成为趋势?
激活函数中sigmoid、ReLU等函数的一些性质
Coloro 与WGSN联合发布2023年度色:数字薰衣草色
介绍一个C语言实现的http下载器
缩减50%调试成本 小匠物联推可远程的串口调试助手
应变片传感器的工作原理
MAX32570非接触式PCD应用笔记
CdS核—金等离子体卫星纳米结构增强光催化析氢反应
利用铁路现有的网络资源实现微机监测系统的设计
航空航天业领域的芯片设计方式
从4个重要方面正确选择现代温度传感器
智能传感器的发展趋势
66%中国企业没有看到数字化投资在促进收入增长的作用
充电桩的分类有哪些 充电桩慢充和快充原理的区别
以单片机控制为核心的电磁炉设计
爱国者CES推出全球首款双屏数码相框
简述从WiFi 6到5G线技术在海量联网设备重压下更新换代
CW32为表计数智化助力,现身青岛环球表计大会