Ускорение загрузки - PullRequest
       2

Ускорение загрузки

3 голосов
/ 25 декабря 2010

У меня отключился Google, и я ничего не могу найти по этой теме.

Я пытаюсь создать клиент загрузки с использованием Java, и я выяснил, как загружать файлы с помощью Java, но я хочу увеличить скорость загрузки. Я знаю, как это работает (открытие нескольких подключений к серверу загрузки), но как мне этого добиться?

Я ищу либо подробное объяснение такого алгоритма, либо несколько примеров кода.

Ответы [ 3 ]

9 голосов
/ 25 декабря 2010

Это возможно, только если серверная сторона поддерживает запросы диапазона. Вы можете определить это с помощью запроса HEAD, если заголовок ответа HTTP содержит Accept-Ranges: bytes. Если это так, то вы можете просто создать несколько потоков, которые загружают файл по частям, используя заголовок Range. URLConnection и ExecutorService помогают в этом.

Имейте в виду, что вы также учитываете ограничение количества потоков и пропускной способности сети вашей собственной машины.

Похожие вопросы:

1 голос
/ 25 декабря 2010

BalusC описал трюк, и вот ссылка на некоторый исходный код, который вы можете просмотреть и начать с:

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

Free Download Manager [CPP]: http://freedownload.svn.sourceforge.net/viewvc/freedownload/

@ BalusC Nice Work

0 голосов
/ 25 декабря 2010

Мне немного неясно, вы пишете Java-клиент, который будет общаться с сервером (возможно, сервлетом Java?), Поэтому вы контролируете обе стороны передачи данных? Если это так, вы можете делать почти все, что вы хотите. В Java есть java.util.zip, в котором есть функции для сжатия.

Если вы хотите загрузить четыре (или N) файла одновременно, просто запустите N потоков и параллельно отправляйте HTTP-запросы на сервер. Это может на самом деле не улучшать вещи, в зависимости от скорости соединения, загруженности сети и т. Д.

Написание собственного клиента и обеспечение его правильной многопоточной безопасности - большая работа, поэтому люди просто используют клиентский код Apache HTTP. Его твердое тело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...