![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно реализовать многосекционную закачку файла по http?
Usov © (2009-01-27 17:24:00)Как можно реализовать многосекционную закачку файла по http протоколу?
Anatoly Podgoretsky (2009-01-29 12:02:00) [41]> tesseract (29.01.2009 11:53:09) [9]
> Да они и ведут себя в потоке не всегда предсказуемо.
У многих такое c потоками даже без использования ICS
tesseract (2009-01-29 11:53:00) [42]
> при одной секции все понятно, а как быть если секций 5?
Читать из файла в которой закачиваешь.
> Все, кроме пункта 4, для ICS потоки не нужны,
Да они и ведут себя в потоке не всегда предсказуемо.
Anatoly Podgoretsky (2009-01-29 11:36:00) [43]> Usov (29.01.2009 10:25:06) [6]
Все, кроме пункта 4, для ICS потоки не нужны, так как он поддерживает событийную модель.
Медвежонок Пятачок (2009-01-29 10:52:00) [44]тут напрашивается вопрос при срыве закачки как определить какой сегмент насколько закачан, при одной секции все понятно, а как быть если секций 5?
запоздалый вопрос.
при срыве закачки уже поздняк метаться.
еще при старте потоков, каждый должен знать откуда и докуда ему следует запрашивать рейндж.
Usov (2009-01-29 10:25:00) [45]Насколько я понял многие знают ответ но неохотно делятся им:)
Полазил немного по инету, поковырял библиотеку ICS, и пришел к выводу:
для мультисекционной закачки необходимо:
1) открыть файл на диске (TFileStream)
2) создать массив с TidHTTP (количество их равно количеству секций)
3) каждому элементу TidHTTP в свойстве .Reques.Range или .Reques.ContentRangeStart и .Reques.ContentRangeEnd (еще не разобрался) присваиваем этим свойствам соответствующие сегменты файла
4) каждый элемент TidHTTP придется запускать в отдельном потоке
тут напрашивается вопрос при срыве закачки как определить какой сегмент насколько закачан, при одной секции все понятно, а как быть если секций 5?
Медвежонок Пятачок (2009-01-28 21:25:00) [46]несколько idhttp
Usov (2009-01-28 19:54:00) [47]
> У TIdHTTP есть соотвествующие свойства.
Это все понятно, но как организовать несколько одновременных скачек и чтоб это все писать в один файл?
Palladin (2009-01-28 13:39:00) [48]У TIdHTTP есть соотвествующие свойства.
Usov (2009-01-27 22:33:00) [49]А если по простому, можно ли это сделать с помощью TidHTTP (Indy) или THTTPCli (ICS)?
Palladin (2009-01-27 18:47:00) [50]Его изучив. В лице поля заголовка Range.