我已经用谷歌搜索过了,但我找不到任何关于这个话题的东西。
我正在尝试使用Java创建一个下载客户端,我已经知道如何使用Java下载文件,但我想加快下载速度。我知道这是如何工作的(打开几个到下载服务器的连接),但是我如何才能做到这一点呢?
我正在寻找这样的算法或一些代码示例的一些详细解释。
发布于 2010-12-25 07:37:46
只有当服务器端支持range请求时,这才是可能的。可以通过使用HEAD请求检查HTTP响应头是否包含Accept-Ranges: bytes来确定这一点。如果是这种情况,那么您可以只生成几个线程,这些线程使用Range头文件分部分下载文件。URLConnection和ExecutorService在这方面很有帮助。
请记住,您还考虑到了您自己机器的线程数量和网络带宽的限制。
相关问题:
发布于 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
发布于 2010-12-25 07:46:06
我不太清楚,您是否正在编写一个Java客户机,它将与服务器(可能是Java servlet?)通信,这样您就可以控制数据传输的两端?如果是这样,你几乎可以做任何你想做的事情。Java有java.util.zip,它有做压缩的功能。
如果您想一次下载四个(或N个)文件,只需启动N个线程并并行地将HTTP请求传递给服务器即可。根据链路速度、网络拥塞等情况,这可能不会真正改善情况。
编写自己的客户端并使其适当地多线程安全是一项大量的工作,这就是为什么人们只使用Apache HTTP客户端代码的原因。它坚如磐石。
https://stackoverflow.com/questions/4528721
复制相似问题