各位亲 有时间可以去看看我的 “金骏家居淘宝店” http://jinjun1688.taobao.com/shop/view_shop.htm?tracelog=twddp 买时说明在我的博客看到有优惠哦 还有意外礼品赠送 真正的程序员淘宝店
引言:
因为要在android手机测停止DM开发, 其中最重要的就是FUMO和SCOMO下载, 下载操作的是linux开源库libcurl. 于是就把libcurl的操作钻研了一遍, 有些心得, 并处置了一些网友的阻塞卡死效果, 于是jwisp将阅历和打算分享给大家.
一共四篇:
操作libcurl停止文件下载类名目开发(一) libcurl简略操作引见
(二)操作libcurl实现获取目的文件大小, 下载进度显示, 断点续传等性能
(三)Libcurl中操作curl_easy_perform阻塞, 遇到无信号卡死的完满处置打算
(四)操作Libcurl下载文件,处置无信号中缀,下载中掉电复原后断点续传效果的源代码
Libcurl操作引见:
四个要害函数:
1. curl_easy_init() 初始化curl环境,新建curl对象,前往对象句柄,操作举例: CURL *handler = curl_easy_init();
2. curl_easy_setopt() 各种设置, 包括URL设置等,操作举例:
curl_easy_setopt(handler, CURLOPT_URL, “”),其中中间的参数是设置的类别,比力重要,后面会罗列分析.
3. curl_easy_perform() 末尾执行下载操纵, 若下载失败会前往舛误码.例如: CURLcode code = curl_easy_perform(handler)
4. curl_easy_getinfo() 失去各种下载信息, 包括下载文件名,文件大小等,此操纵必须放在curl_easy_perform()之后执行能力失去正确的值.操作举例: long resultCode;
curl_easy_getinfo(handler, CURLINFO_RESPONSE_CODE, &resultCode);
中间的参数也在后面罗列
须要的参数分析
curl_easy_setopt()参数:
CURLOPT_URL 设置目的URL地址
CURLOPT_HEADER 能否蕴含http头,蕴含则设置为一个非0值
CURLOPT_NOBODY 假设你不需求http的body部门(除header头以外其余部门),设置此项为一个非0值
CURLOPT_TIMETOU 设置一个超时工夫,若逾越此工夫perform会立即前往,前往码为下载失败对应舛误码,单位秒.留意此工夫为从调用perform末尾后的总的下载工夫,举例curl_easy_setopt(handler, CURLOPT_TIMEOUT, 30)
设置超时工夫为30秒,即下载必须在30秒内完成,不然前往下载失败
CURLOPT_CONNECTIONTIMEOUT 衔接超时工夫,单位秒.这个参数在easy curl下载中基本没什么实用价值.
CURLOPT_RESUME_FROM_LARGE 从什么位置末尾下载,断点续传主要操作此参数停止配置,操作十分简略,只要求传递一个字节偏移量即可,例如
curl_easy_setopt(handler, CURLOPT_ RESUME_FROM, 0),暗示从第0个字节末尾下载, curl_easy_setopt(handler, CURLOPT_ RESUME_FROM, 500),从第500个字节末尾下载
CURLOPT_RANGE 下载指定字节的文件块,参数对应的值格式为X-Y,例如curl_easy_setopt(handler, CURLOPT_ RESUME_FROM, “500-999”),下载从500个字节末尾到999字节完毕的文件块