首页 / 软件开发 / JAVA / Java网络编程从入门到精通(24):实现HTTP断点续传下载工具
Java网络编程从入门到精通(24):实现HTTP断点续传下载工具2011-01-12在前面的文章曾讨论了HTTP消息头的三个和断点继传有关的字段。一个是请求消息的字段Range,另两个是响应消息字段Accept-Ranges和Content-Range。其中Accept-Ranges用来断定Web服务器是否支持断点继传功能。在这里为了演示如何实现断点继传功能,假设Web服务器支持这个功能;因此,我们只使用Range和Content-Range来完成一个断点继传工具的开发。l 要实现一个什么样的断点续传工具?这个断点续工具是一个单线程的下载工具。它通过参数传入一个文本文件。这个文件的格式如下:http://www.ishare.cc/d/1174254-2/106.jpg d:ok1.jpg 8192http://www.ishare.cc/d/1174292-2/156.jpg d:ok2.jpg 12345http://www.ishare.cc/d/1174277-2/147.jpg d:ok3.jpg 3456这个文本文件的每一行是一个下载项,这个下载项分为三部分:要下载的Web资源的URL。要保存的本地文件名。下载的缓冲区大小(单位是字节)。使用至少一个空格来分隔这三部分。这个下载工具逐个下载这些文件,在这些文件全部下载完后程序退出。l 断点续传的工作原理“断点续传”顾名思义,就是一个文件下载了一部分后,由于服务器或客户端的原因,当前的网络连接中断了。在中断网络连接后,用户还可以再次建立网络连接来继续下载这个文件还没有下完的部分。要想实现单线程断点续传,必须在客户断保存两个数据。1.已经下载的字节数。2.下载文件的URL。一但重新建立网络连接后,就可以利用这两个数据接着未下载完的文件继续下载。在本下载工具中第一种数据就是文件已经下载的字节数,而第二个数据在上述的下载文件中保存。在继续下载时检测已经下载的字节数,假设已经下载了3000个字节,那么HTTP请求消息头的Range字段被设为如下形式:Range: bytes=3000-HTTP响应消息头的Content-Range字段被设为如下的形式:Content-Range: bytes 3000-10000/10001