标签:多线程下载

java实现多线程、断点下载

发表于3年前(Jun 8, 2015 11:58:42 AM)  阅读 558  评论 0

分类: Java 类库工具

标签: 多线程下载 断点下载 Content-Disposition RANGE Content-Range

1、知识预备

平时我们用下载工具用的很多,下载工具具有多线程下载,断点续传等优点。多线程下载简单来说就是向服务器发起多个连接,一般来说服务器会给当前连接的每个客户端平均分配带宽,如果你的连接多,自然而然的速度就比别人快。不过现在很多服务器都有安全机制,一般会限制每个ip的连接数,碰到这种情况的话,就要靠代理ip来解决了。

使用多线程下载主要是发起连接时,向服务器说明此次连接需要获取的数据段,通过URLConnection类的setRequestProperty("RANGE","bytes=0-23245")来设定,如果服务器支持的话,在response的header里面将会带入Content-Range属性,里面标示了这次返回的字节范围。

断点续传的话就比较简单,无非记录本次下载的进度,下次连接时,还是通过制定数据字节范围,继续未完成的下载。麻烦的地方主要在于如何记录进度,记录的频率,还有异常的情况发生,这里异常的情况指的是,用户强行结束进程,电脑宕机断电等情况,如何在这些情况发

......