摘要:
接上一个简单的demo之后,又花了几天时间做了个简单的多线程断点续传下载。主要用到的知识还是上一个Demo中的关于如何获取指定范围数据的知识点。这里因为是多线程的断点续传下载,所以当然是在逻辑上要让文件的各个数据部分同时被写入,因此就引入了数据分块获取和写入以及记录分块信息的功能。实现思路:1、仿照迅雷,使用两个临时文件,一个是要下载的文件加上临时后缀,一个是记录下载信息的临时文件。2、开始时,判断目标文件是否存在,存在则认为下载完成了,否则以不存在则创建的方式打开临时下载文件(这里如果是新创建的话,要将文件大小设置成目标文件大小,这里文件的大小要通过HTTP的HEAD VERB去获取),然后 阅读全文
摘要:
最近比较空闲,尝试了一下网络方面的编程,于是兴起写一个多线程断点续传下载的简单demo。于是首先在网络上搜索各种实现思路,最终决定先从一个简单的单线程断点续传下载开始。实现思路:每次都以如果不存在则创建的方式打开要下载的文件,然后获取其大小size,然后给URL发送请求头,带上头信息range,并以size作为要获取的数据起始位置,终止位置不写(表明要获取后面所有的数据)。然后便是不断的向文件末尾追写数据。直至某一次启动下载的时候发现返回的状态码为416,表明范围超出了,则表示文件已经下载完成了。关键知识点:1、需要对HTTP协议有初步的理解,主要是对请求头与返回头的格式要求进行理解。2、要明 阅读全文