libcurl下载限速编程调研
目前的业务需求是, 要求下载过程中, 能够恰当控制下载速度?
如何实现? 我想到了libcurl中提供的下载限速选项.现在探讨如下.
我找到Ubuntu 14.04.01的iso大文件, 使用libcurl来限速下载, 参见下图:
下面是相关的源码
//g++ -g curl_speed.cpp -o curl_speed -lcurl
//
#include <stdio.h>
#include <iostream>
#include <string>
#include <curl/curl.h>using namespace std;int download (string url, string local_file, int down_speed)
{CURL *curl;CURLcode res;FILE *fp;curl = curl_easy_init ();if (curl){//Open Filefp = fopen (local_file.c_str (), "w");if (fp == NULL)cout << "File cannot be opened" << endl;curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, NULL);curl_easy_setopt (curl, CURLOPT_WRITEDATA, fp);curl_easy_setopt (curl, CURLOPT_URL, url.c_str ());curl_easy_setopt (curl, CURLOPT_FOLLOWLOCATION, 1);//这里限速 100KB/scurl_easy_setopt (curl, CURLOPT_MAX_RECV_SPEED_LARGE, (curl_off_t) down_speed * 1024);curl_easy_setopt (curl, CURLOPT_NOPROGRESS, 0);// curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);//限速下载res = curl_easy_perform (curl);if (res)cout << "Cannot grab the File!\n";}//Clean up the resourcescurl_easy_cleanup (curl);//Close the filefclose (fp);return 0;
}int main (int argc, char *argv[])
{string url ("http://cdimage.ubuntu.com/releases/14.04/release/ubuntu-14.04-desktop-amd64+mac.iso");//string url("http://m4.biz.itc.cn/pic/new/n/15/78/Img7087815_n.jpg");string filepath ("./a.jpg");int downspeed = 600;int ret = download (url, filepath, downspeed);cout << "download [result]: " << ret << endl;return 0;
}
下面是不同限速下面的程序截图,分别对应50, 200, 600kb/s的限速设置
从截图可以看出, 设置限速600kb/s时, 已经达到我所在网络所能下载的极限, 所以数据下载过程中, 波动比较大, 但都不会超过600kb/s的上限.
看来, libcurl的限速功能还是很靠谱的.
libcurl下载限速编程调研相关推荐
- 非VIP用户下载限速,原来是这么实现的
在日常工作之余,二狗子其实还是个隐藏的大触,一手素描画得出神入化,不少看过的小伙伴嗷嗷叫着求分享.为了让更多小粉丝能看到自己的作品,二狗子开发了一个提供有版权的素描稿件的下载网站. 二狗子的小网站,只 ...
- pdf百度云下载 python编程 从数据分析到数据科学_python零基础入门教程,不同方向的,这很重要...
很多人都在学python,对于大多数的人来说,方向最重要的,它决定着你的结果! 编程小十接触过很多想学python的人,相对于自己的学习目的来说,很多时候容易选择不太正确的方向. 下面我简单介绍一下 ...
- Nginx 下载限速
一.限速介绍 在生产环境中,为了保护WEB服务器的安全,我们都会对用户的访问做出一些限制,保证服务器的安全及资源的合理分配. 限流(rate limiting)是NGINX众多特性中最有用的,也是经常 ...
- android http下载限速,安卓手机端两种让网盘不限速下载方法介绍
百度网盘已然成为分享型网盘中一家独大的"大佬"了.时代就是这样不管你喜不喜欢,上网总会遇到些百度网盘共享的文件需要下载.然而,百度网盘对免费用户的限速已经到了"感人&qu ...
- Aria2-突破百度网盘下载限速
真的是神器,感谢网友的贡献与分享,做一个简化版的总结 aria2官网(看看就可以,暂时没什么用):https://aria2.github.io/ macOS mac上配置比较简单 安装chrome插 ...
- 【IDM+百度网盘助手】突破百度云下载限速,适用于谷歌浏览器【图文+附下载地址】
百度云下载限速实在是太坑了,能吃好多速度啊!话不多说,方法如下: 1.安装IDM--网址https://www.52pojie.cn/thread-681117-1-1.html 2.安装" ...
- 百度网盘——下载限速问题解决方案(油猴(Tampermonkey)+百度网盘直链下载助手+IDM)
一.基本概念 Tampermonkey(油猴):Tampermonkey插件是一个免费的浏览器扩展和最为流行的用户脚本管理器,拥有适用于 Chrome, Microsoft Edge, Safari, ...
- 解除百度网盘下载限速
title: 解除百度网盘下载限速 date: 2017-08-9 11:00:00 tags: 分享 众所周知的百度网盘为了迫使用户花钱,对用户的下载速度做出了限制.今天我就来分享一个破解限制的好办 ...
- 扇贝python编程课_扇贝编程app下载-扇贝编程手机版python「附如何设置自由职业」 - 超好玩...
扇贝编程app是一款学程序的初学者们都爱用的编程学习软件,软件汇集从入门到应用一应俱全.扇贝编程手机版python「附如何设置自由职业」常见的编程语言及技术教程,学习查询两不误!更有专业的编程导师手把 ...
最新文章
- 2022-2028年中国酒行业投资分析及前景预测报告
- C++标准库:使用std_list作为链表
- textaligncenter仍然不居中_戊唑醇和己唑醇都是杀菌剂,有啥不同?真正懂的人不多...
- 算法复习——虚树(消耗战bzoj2286)
- 陈述、叙述、表述、描述的区别
- Android学习—Notification消息通知
- spring boot web 开发示例
- 运行orbslam2出现 段错误 (核心已转储)_JDK 14已发布快速预览16个新特性
- 特斯拉召回部分进口Model S、Model X电动汽车
- VueSSR高阶指南
- 疫中行,程序员可在家免费学这些!
- POJ 2991 Crane(线段树+计算几何)
- LoadRunner11录制APP脚本(2)
- ios13 文件 连接服务器 您已离线,iOS13,终于可以屏蔽系统更新了
- RockWare RockWorks 17.0.0 1CD地表数据可视化软件
- 谈谈银联 js 支付
- 进制转换(八进制小数转十进制小数)
- BDP数据可视化分析工具,TAGUL数据可视化分析工具
- dds:publish
- 每个python文件就是一个模块、模块的名字就是_每个Python文件都可以作为一个模块,模块的名字就是 的名字_学小易找答案...
热门文章
- ubuntu 挂载 exfat 格式 U盘 mount:unknown filesystem type ‘exfat‘
- 最新手机号段归属地数据库(2017年4月16日版)免费下载
- 一.Linq to JSON是用来干什么的?
- Swift中的问号?和感叹号!
- PHP实现XML传输
- 中国挪动批改KPI查核制度将器重客户满意度
- 一些权限管理方面的文章
- 表格下划线怎么加粗_这招高!Excel签名栏的下划线随列宽变化,是不是感觉牛哄哄的?...
- python读取文件r_python read文件的r和rb的区别
- ipad html 自定义裁剪图片大小,移动端图片裁剪上传插件 Mavatar.js(原创)