博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
断点下载的两种实现
阅读量:2222 次
发布时间:2019-05-08

本文共 576 字,大约阅读时间需要 1 分钟。

在使用下载时,有时会因为某些原因暂停下载功能。而这个功能是怎么实现的的?

一、HTTP层的方式

当客户端想暂停下载时,客户端断掉整个请求链接,当再次下载的时候在http的Header中发一个

range:bytes=开始长度-结束长度

优点:客户端可以关闭,比较灵活。

缺点:

HTTP的这种方法在PC上做是没有问题的,因为现在的网速都很快,建立一个链接是一件很容易的事,但是对于移动终端来说却不是一件好事,因为移动终端要建立一个链接是一件很漫长的事,可以有几十移钟,一个最简单的例子是:在一些特殊的机型上,必须使用分片下载,当进度条走到一定的时候就一动不动了,其实这时就是在重新链接网络。但是因为网速很慢,所以进度条就一动不动的了。

二、TCP层

在TCP层也有一个能暂停下载的功能。就是利用TCP协议的Window 大小,当程序想暂停下载时,程序可以发一个TCP window = 0的请求,这样服务器端就会停止返回数据,直到客户端发出TCP window 不等于0 的情况。

优点:不需要重新去请求,当前链接还存在,所以可以节省链接网络的时间。

缺点:不能关闭客户端,如果关闭客户端的话,只能使用HTTP的方法继续下载。

附:

第二种方式我是在观察chrome的下载实现中发现的,但是现在还没有看到相关的操作代码。如果有知道具体实现的,还请指教。

转载地址:http://jyifb.baihongyu.com/

你可能感兴趣的文章
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
leetcode 130. Surrounded Regions
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>