下载加速

时间:2010-12-24 23:32:33

标签: java algorithm http download

我已经谷歌了,我找不到任何关于这个主题的内容。

我正在尝试使用Java创建下载客户端,并且我已经找到了如何使用Java下载文件,但我想加快下载速度。我知道这是如何工作的(打开下载服务器的几个连接),但我怎么能实现这个呢?

我正在寻找这种算法的一些详细解释或一些代码示例。

3 个答案:

答案 0 :(得分:9)

仅当服务器端支持范围请求时才可以这样做。如果HTTP响应头包含Accept-Ranges: bytes,则可以通过使用HEAD请求进行检查来确定。如果是这种情况,那么您可以生成多个线程,使用Range标头部分下载文件。 URLConnectionExecutorService对此很有帮助。

请注意,您还要考虑自己计算机的线程数和网络带宽限制。

相关问题:

答案 1 :(得分:1)

BalusC描述了这个技巧,这里引用了一些您可以查看并开始的源代码:

JDownLoader [Java]:http://svn.jdownloader.org/projects/show/jd

免费下载管理器[CPP]:http://freedownload.svn.sourceforge.net/viewvc/freedownload/

@BalusC好工作

答案 2 :(得分:0)

我有点不清楚,您是否正在编写一个与服务器(可能是Java servlet?)通信的Java客户端,因此您可以控制数据传输的双方?如果是这样,你几乎可以做任何你想做的事。 Java有java.util.zip,它具有进行压缩的功能。

如果要一次下载四个(或N个)文件,只需启动N个线程并将HTTP请求并行传递给服务器。这实际上可能无法改善,具体取决于链接速度,网络拥塞等。

编写自己的客户端并使其正确地保持多线程安全是一项繁重的工作,这就是为什么人们只使用Apache HTTP客户端代码。它坚如磐石。