设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 1057|回复: 0

如何优雅的使用http协议规范Range来做多线程206状态码下载测速软件

[复制链接]
 成长值: 336

签到天数: 4737 天

[LV.Master]伴坛终老

发表于 2023/3/6 04:02 | 显示全部楼层 |阅读模式 |Google Chrome 110.0.0.0|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
如何优雅的使用http协议规范Range来做多线程206状态码下载测速软件

通过head获取文件大小,例子,先探测 -url 参数的下载地址是否支持多线程

  1. curl -r 0-0 -i https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm
复制代码

可得知206状态响应,并且响应文件大小 Content-Range: bytes 0-0/17884993

此时可多线程测速,暴力多线程就是同时执行多条汇聚测速结果,不考虑对方网站消耗流量,测速一次可能超出文件大小几倍流量

  1. curl -r 0- https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o test
复制代码

优雅点就是分割文件,例如默认四线程的情况,就砍4刀。判断17884993大于等于10M,每个线程启用2MB
此时多线程的四个请求分别为

  1. curl -r 0-2097152 https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part1
  2. curl -r 2097153-4194304 https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part2
  3. curl -r 4194305-6291456 https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part3
  4. curl -r 6291457- https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part4
复制代码


合并文件,无需考虑,因为测速的话这些肯定不会写硬盘,也应该直接在内存中丢弃

  1. cat part1 part2 part3 part4 >> test.out
复制代码

md5sum test.out    #54b116d6f3d37039dac72c2e54bf89af,test.out与test结果一致


帖子补充
比特彗星走的是http协议规范的range多线程下载技术,是目前全世界上下载性能最好的软件,没有其他任何代替品,无敌的寂寞

欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/23 16:15 , Processed in 0.114297 second(s), 21 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表