使用开源的libcurl库可以很方便的实现文件的上传或下载,libcurl支持FTP、HTTP等常见的多种协议。当使用libcurl的接口启动上传或下载任务后,如何暂停或者取消上传或下载呢?
null
下面的函数设定传输进度的回调函数
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, ProgressCallback);
函数的实现如下:
- int HttpDownloadDomain::ProgressCallback(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
- {
- HttpDownloadDomain* dd = (HttpDownloadDomain*)clientp;
- if ( dltotal > -0.1 && dltotal < 0.1 )
- {
- return 0;
- }
- int nPos = (int) ( (dlnow/dltotal)*100 );
- //通知进度条更新下载进度
- std::cout << “dltotal: “ << (long)dltotal << ” —- dlnow:” << (long)dlnow << std::endl;
- if(*dd->cancel_)
- {
- //1. 返回非0值就会终止 curl_easy_perform 执行
- return -2;
- }
- return 0;
- }
当需要暂停或取消上传/下载时,设定ProgressCallback函数返回非零值即可。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容