目前的业务需求是, 要求下载过程中, 能够恰当控制下载速度?

如何实现? 我想到了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下载限速编程调研相关推荐

  1. 非VIP用户下载限速,原来是这么实现的

    在日常工作之余,二狗子其实还是个隐藏的大触,一手素描画得出神入化,不少看过的小伙伴嗷嗷叫着求分享.为了让更多小粉丝能看到自己的作品,二狗子开发了一个提供有版权的素描稿件的下载网站. 二狗子的小网站,只 ...

  2. pdf百度云下载 python编程 从数据分析到数据科学_python零基础入门教程,不同方向的,这很重要...

    很多人都在学python,对于大多数的人来说,方向最重要的,它决定着你的结果! ​编程小十接触过很多想学python的人,相对于自己的学习目的来说,很多时候容易选择不太正确的方向. 下面我简单介绍一下 ...

  3. Nginx 下载限速

    一.限速介绍 在生产环境中,为了保护WEB服务器的安全,我们都会对用户的访问做出一些限制,保证服务器的安全及资源的合理分配. 限流(rate limiting)是NGINX众多特性中最有用的,也是经常 ...

  4. android http下载限速,安卓手机端两种让网盘不限速下载方法介绍

    百度网盘已然成为分享型网盘中一家独大的"大佬"了.时代就是这样不管你喜不喜欢,上网总会遇到些百度网盘共享的文件需要下载.然而,百度网盘对免费用户的限速已经到了"感人&qu ...

  5. Aria2-突破百度网盘下载限速

    真的是神器,感谢网友的贡献与分享,做一个简化版的总结 aria2官网(看看就可以,暂时没什么用):https://aria2.github.io/ macOS mac上配置比较简单 安装chrome插 ...

  6. 【IDM+百度网盘助手】突破百度云下载限速,适用于谷歌浏览器【图文+附下载地址】

    百度云下载限速实在是太坑了,能吃好多速度啊!话不多说,方法如下: 1.安装IDM--网址https://www.52pojie.cn/thread-681117-1-1.html 2.安装" ...

  7. 百度网盘——下载限速问题解决方案(油猴(Tampermonkey)+百度网盘直链下载助手+IDM)

    一.基本概念 Tampermonkey(油猴):Tampermonkey插件是一个免费的浏览器扩展和最为流行的用户脚本管理器,拥有适用于 Chrome, Microsoft Edge, Safari, ...

  8. 解除百度网盘下载限速

    title: 解除百度网盘下载限速 date: 2017-08-9 11:00:00 tags: 分享 众所周知的百度网盘为了迫使用户花钱,对用户的下载速度做出了限制.今天我就来分享一个破解限制的好办 ...

  9. 扇贝python编程课_扇贝编程app下载-扇贝编程手机版python「附如何设置自由职业」 - 超好玩...

    扇贝编程app是一款学程序的初学者们都爱用的编程学习软件,软件汇集从入门到应用一应俱全.扇贝编程手机版python「附如何设置自由职业」常见的编程语言及技术教程,学习查询两不误!更有专业的编程导师手把 ...

最新文章

  1. 2022-2028年中国酒行业投资分析及前景预测报告
  2. C++标准库:使用std_list作为链表
  3. textaligncenter仍然不居中_戊唑醇和己唑醇都是杀菌剂,有啥不同?真正懂的人不多...
  4. 算法复习——虚树(消耗战bzoj2286)
  5. 陈述、叙述、表述、描述的区别
  6. Android学习—Notification消息通知
  7. spring boot web 开发示例
  8. 运行orbslam2出现 段错误 (核心已转储)_JDK 14已发布快速预览16个新特性
  9. 特斯拉召回部分进口Model S、Model X电动汽车
  10. VueSSR高阶指南
  11. 疫中行,程序员可在家免费学这些!
  12. POJ 2991 Crane(线段树+计算几何)
  13. LoadRunner11录制APP脚本(2)
  14. ios13 文件 连接服务器 您已离线,iOS13,终于可以屏蔽系统更新了
  15. RockWare RockWorks 17.0.0 1CD地表数据可视化软件
  16. 谈谈银联 js 支付
  17. 进制转换(八进制小数转十进制小数)
  18. BDP数据可视化分析工具,TAGUL数据可视化分析工具
  19. dds:publish
  20. 每个python文件就是一个模块、模块的名字就是_每个Python文件都可以作为一个模块,模块的名字就是 的名字_学小易找答案...

热门文章

  1. ubuntu 挂载 exfat 格式 U盘 mount:unknown filesystem type ‘exfat‘
  2. 最新手机号段归属地数据库(2017年4月16日版)免费下载
  3. 一.Linq to JSON是用来干什么的?
  4. Swift中的问号?和感叹号!
  5. PHP实现XML传输
  6. 中国挪动批改KPI查核制度将器重客户满意度
  7. 一些权限管理方面的文章
  8. 表格下划线怎么加粗_这招高!Excel签名栏的下划线随列宽变化,是不是感觉牛哄哄的?...
  9. python读取文件r_python read文件的r和rb的区别
  10. ipad html 自定义裁剪图片大小,移动端图片裁剪上传插件 Mavatar.js(原创)