小樱 发表于 2023/3/6 04:02

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

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

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

curl -r 0-0 -i https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm
可得知206状态响应,并且响应文件大小 Content-Range: bytes 0-0/17884993

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

curl -r 0- https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o test
优雅点就是分割文件,例如默认四线程的情况,就砍4刀。判断17884993大于等于10M,每个线程启用2MB
此时多线程的四个请求分别为

curl -r 0-2097152 https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part1
curl -r 2097153-4194304 https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part2
curl -r 4194305-6291456 https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part3
curl -r 6291457- https://cdn.cloudflare.steamstatic.com/steam/apps/5952/movie_max.webm -o part4

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

cat part1 part2 part3 part4 >> test.out
md5sum test.out    #54b116d6f3d37039dac72c2e54bf89af,test.out与test结果一致


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

页: [1]
查看完整版本: 如何优雅的使用http协议规范Range来做多线程206状态码下载测速软件