| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Распределённые приложения и сеть > Скачать файл с докачкой |
| Автор: Gregorian 11.1.2007, 18:14 |
| Как скачать файл с возможностью докачки? |
| Автор: awers 12.1.2007, 02:37 |
| думаю смысл довольно прост. Если в один поток - держи в памяти метку, сколько скачали. Коннект оборвался (если сервер поддерживает докачку) - начинай качать с метки ... |
| Автор: Gregorian 12.1.2007, 12:06 |
| Это и козе понятно! Я не знаю как начать закачку с заданной позиции в файле? Как осуществить это на http и ftp? Я не собираюсь писать для этих протоколов собственные библиотеки! |
| Автор: awers 12.1.2007, 12:41 |
| А нафига? Попробуй к примеру посмотреть специф. к апачу .. а мож по самому HTTP. Как вариант мона посмотреть на примере софтины RegetDelux какие хедеры она отправляет для получения файла с определенной позиции |
| Автор: Ch0bits 13.1.2007, 18:07 | ||
| Давноненько задумывался на этой проблемой. По идее должна быть возможность позиционировать по сетевому потоку, но я такого не нашёл. Есть альтернативная идея. В классе HttpWebRequets есть возможность добавить диапазон скачивания AddRange. Таким образом, файл можно разделить на секторы (кусочки). Состояние, закачан сектор или нет, можно сохранять в битовой карте. Для скорости сделать закачку многопоточной, чтобы одновременно запрашивались несколько секторов. Размер сектора выбирается как размер который не страшно потерять при обрыве. Хотя можно и для недокачанного сектора сохранять состояние. Написал тривиальный пример от балды, т.к. студии нет.
Добавлено @ 18:11 Вот ещё. Позиционировать по файлу, чтобы сохранять секторы, можно с помощью метода Seek класса FileStream. |
| Автор: Gregorian 13.1.2007, 20:23 |
| awers, не понял, что вы имеете в виду? Я об Апаче не имею представления и как хедеры посмотреть тоже не знаю. Ch0bits, сложновато оказывается... Спасибо за идею! Другие предложения принимаются. |
| Автор: Stepan_Lameroff 13.1.2007, 21:38 |
| http://www.codeproject.com/cs/library/downloader.asp |