首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载加速

下载加速
EN

Stack Overflow用户
提问于 2010-12-25 07:32:33
回答 3查看 1.4K关注 0票数 3

我已经用谷歌搜索过了,但我找不到任何关于这个话题的东西。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-25 07:37:46

只有当服务器端支持range请求时,这才是可能的。可以通过使用HEAD请求检查HTTP响应头是否包含Accept-Ranges: bytes来确定这一点。如果是这种情况,那么您可以只生成几个线程,这些线程使用Range头文件分部分下载文件。URLConnectionExecutorService在这方面很有帮助。

请记住,您还考虑到了您自己机器的线程数量和网络带宽的限制。

相关问题:

票数 9
EN

Stack Overflow用户

发布于 2010-12-25 18:08:44

BalusC描述了这个技巧,下面是一些源代码的参考,您可以查看并开始使用:

JDownLoaderJava:http://svn.jdownloader.org/projects/show/jd

免费下载ManagerCPP:http://freedownload.svn.sourceforge.net/viewvc/freedownload/

@BalusC Nice Work

票数 1
EN

Stack Overflow用户

发布于 2010-12-25 07:46:06

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

如果您想一次下载四个(或N个)文件,只需启动N个线程并并行地将HTTP请求传递给服务器即可。根据链路速度、网络拥塞等情况,这可能不会真正改善情况。

编写自己的客户端并使其适当地多线程安全是一项大量的工作,这就是为什么人们只使用Apache HTTP客户端代码的原因。它坚如磐石。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4528721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档