2009-10-12 7 views
5

Прошу прощения за мое незнание по этому вопросу.Загрузка нескольких файлов на C#?

Я хотел бы написать приложение на C#, которое может загружать файлы с сервера так же, как DownThemAll. Кажется, что DownThemAll открывает четыре подключения к HTTP-серверу для загрузки того же файла. Мне просто интересно, есть ли существующие библиотеки, которые могут это сделать.

Вот цитата с их сайта об этой функции:

DownThemAll показывает смарт скачать технику под названием «многочастная скачать». Он разбивает файлы на несколько разделов, которые загружаются одновременно.

Я также хотел бы иметь возможность приостанавливать/возобновлять загрузку. Это базовая функциональность, которую я бы хотел, мне не обязательно нужна полноценная библиотека диспетчера загрузок, но если есть такая возможность, я бы тоже хотел узнать о них. Файлы находятся в защищенном паролем каталоге, размещенном на lighttpd, поэтому мне также нужен какой-то способ аутентификации.

Если нет каких-либо ранее существовавших библиотек, которые я могу использовать, то какие классы .net следует изучать, что может это сделать?

Спасибо!

EDIT: переименовал заголовок, чтобы быть более уместным, и добавил цитату с сайта DownThemAll, объяснив, что это такое.

2nd EDIT: Я считаю, что svens опубликовал наиболее подходящий ответ до сих пор, хотя в качестве комментария:/Это моя вина, поскольку я неправильно назвал название, поскольку я не знал, о чем говорю. Он опубликовал сообщение article, в котором происходит приостановка/возобновление загрузки HTTP. Он также говорит о заголовке Range, который я думаю, что я должен использовать:

Заголовок Range способен задавать более одного диапазона в одном запросе, функция под названием «многокомпонентные диапазоны.» Не путайте это с сегментированной загрузкой, которую используют почти все инструменты для загрузки, чтобы увеличить скорость загрузки. Эти инструменты утверждают, что улучшают скорость загрузки, открывая два или более одновременных соединения, каждый из которых запрашивает другой диапазон файла.

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

Спасибо, ребята!

P.Svens, отправьте комментарий и отправьте комментарий в качестве ответа, чтобы я мог принять его, если вы хотите.

+2

http://www.devx.com/dotnet/Article/22533/0/page/2 описывает, как загрузка возобновляется в http-протоколе, http://www.codeproject.com/KB/IP/pauseresume.aspx описывает, как это сделать с ftp-серверами. – svens

+0

Это мог быть ответ, который я думаю. Тот же метод может заключаться в том, как они загружают отдельные фрагменты файла, а затем как-то складывают их, как только куски закончены. –

+0

Эта практика на самом деле плохо для сервера, и предпринимаются усилия по блокированию таких попыток загрузки. Трюк поднялся во времена коммутируемых модемов, когда люди пытались выжать все из него. Просто будь красивой и загружаемой в одном соединении. EDIT: этот метод не удался на моем сервере по нескольким причинам. У меня есть вещь, которая бросает палочки под ноги лекаря. – Zdenek

ответ

2

Я с Svens на это, http://www.devx.com/dotnet/Article/22533/0/page/2, кажется, говорят все.

+0

Спасибо. Поскольку он сказал это первым, я подожду некоторое время, чтобы посмотреть, отправит ли он его в качестве ответа, чтобы я мог его принять. Иначе он пойдет к вам ради закрытия по этому вопросу. –

1

Класс System.Net.HttpClient должен иметь возможность скачивать файлы. Просто вызовите этот класс из потока или пула потоков, и вы можете одновременно загружать множество файлов.

+1

Спасибо, что я это ценю, но я не хотел сказать, что хочу одновременно загружать разные файлы. DownThemAll открывает четыре подключения к HTTP-серверу, чтобы загрузить/тот же/файл. –

+0

HttpClient, вероятно, проще, чем Http.Get ... +1 – overstood

+1

Они ссылаются на него как на «многостраничную загрузку». –

3

Pardon проводка к статье старше Христа, но это:

http://www.codeproject.com/Articles/21053/MyDownloader-A-Multi-thread-C-Segmented-Download-M

, кажется, ближе к тому, что было предложено.

В настоящее время отмеченный «правильный ответ» хорош для предоставления частичной частичной загрузки на стороне сервера, он каким-то образом объясняет, что делают заголовки HTTP Range, но это не клиент загрузки.

+0

Уверенный, что выглядит хорошо. Имейте upvote. –

Смежные вопросы