@KenKup11

Как быстро скачать файл весом 4гб?

Добрый вечер.
Появилась необходимость написать программу, которая будет скачивать файл, весом 4гб.
Воспользовался WebClient и просто сделал в программе кнопку, при нажатии на которую начиналась скачка того самого файла. Добавил прогресс бар и запустил программу. Нажал на кнопку, после чего понял, что скачка такого файла занимает много времени (минут 20). Метод со сжатием файла в архив рассматривать не буду, нужно скачать его без архива.
Как можно это сделать?
Читал про скачку файлов по частям, но нигде не нашел рабочих примеров и т.п.
Пожалуйста, помогите найти нужное.
Спасибо.
  • Вопрос задан
  • 184 просмотра
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
Передавать в заголовке Range, чтобы качать нужную часть. Но какой толк, если ты одну часть и так качаешь на максимальной скорости.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Отрываем немного водопроводный кран... и черпаем хоть одной хоть сразу десятью кружками в ведро - скорость наполнения ведра будет одинаковой... Точнее при большом количестве кружек часть прольётся...

Так и тут - общее время на скачку будет определяться размером файла деленному на самую меньшую скорость между отправителем и получателем.

Единственное что можно сделать для сокращение времени при ситуациях обрывов связи и повторов закачки - использовать механизмы докачки (это если отдающая сторона умеет).

Тогда общая канва будет выглядеть следующим образом:

- получаем размер файла
- готовим список фрагментов исходя из размера и прочих предположений
- качаем файл фрагментами (Range)
- если скачка удалась - метим фрагмент полученным, а неудавшуюся - повторяем
- когда все фрагменты получены - собираем их в файл
profit

p.s. по вкусу вышеописанное можно пускать в несколько потоков - иногда лимитер отдачи может лимитировать по конкретному соединению, а не сессии и суммарная скорость может подрасти.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
Этот же файл от туда же и в то же время дня другими средствами (браузер, веб качальщики) качается быстрее?

Если 'нет' - то причина скорее в интернет провайдере или на отдающей стороне (могут ограничивать скорость или просто перегружен провайдер)

Если 'да', что маловероятно - то нужно смотреть, как именно качаешь файл, хотя с webclient сложно где то напортачить, может там реализация корявая? Как вариант, реализовать многопоточную закачку (бывает провайдеры как на отдающей стороне так и локальные, ограничивают скорость на подключение а не на всю сессию).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы