Уважаемые, я уверен, что вы больше знаете в этой области, лучше разбираетесь и вообще круче. Иначе я бы не заходил сюда в трудные времена за помощью
Но поймите, ведь каждый ищет свои решения, для своих конкретных применений. Иногда случайно можно найти именно то, что нужно. Мои файлы размером 5-15 КБ, но их 80 штук, каждый день одни и те же. Скачиваются они все вместе за 3-4 минуты, естественно в автомате, все это за 5 лет ежедневного скачивания проверено сотни раз. Если где-то что-то сбойнет, я просто запускаю весь список заново, мне потратить дополнительно 3 минуты выгоднее, чем редактировать список убирая оттуда то, что уже скачалось. И в остальных вопросах так же. Можно сказать, что запуская заново в потоке скачиваться уже скачанные файлы, я уже убиваю асинхронность. И за 5 лет каких-то сбоев было, может, 10-20 раз. Т.е. для меня это непринципиально. Если же у меня возникнет другая задача, то я сделаю инструмент под нее.
За ответы большущее спасибо, может они мне пригодятся.
ДОБАВЛЕНО.
Уважаемые Хакер, iGrok и другие знатоки форума, по данной теме есть у меня вопрос, который я так и не смог решить год назад. Сейчас это не первейшая актуальность, но если вы поможете найти ответ, буду рад. И надеюсь - другим это может пригодиться.
Как уже сказал, скачивалка построена на WinSock. Несколько лет все было чудесно, по HTTP1.0 сервер отдавал асинхронно весь файл, при этом в заголовке был размер файла. Собственно задача стояла принять количество байт указанное в заголовке, затем разорвать соединение - все просто. Но как это всегда бывает, у кого-то зачесались руки и на сервере то ли поменяли какие-то настройки, то ли сменили HTTP-сервер.
Сервер стал отдавать файл кусками (chunked), при этом в заголовке размер файла уже не указывается. Возник вопрос - как определить момент окончания скачивания чтоб разорвать соединение. Поизучав соответствующие RFC ответ я так и не нашел. Критерием стали vbCrLf в конце принятого chunk (пробовал vbCrLf & vbCrLf но такого окончания нет). Проблема в том, что файл строковый, поэтому иногда случается, что chunk попадает как раз на конец строки и файл остается недокачанным. Самым легким решением оказалось написать проверялку, которая смотрит последнюю строку файла и если она не такая как нужно, эти 1-2 файла просто скачиваю руками. Не сказать, что это трудно, но поднадоело.
Тогда же был испробован HTTP1.1 Там с концом приема как раз все хорошо, уже не помню, но кажется = vbCrLf & vbCrLf, определяется четко. Но есть своя проблема - файл отдается кракозябрами, как-то заархивированным. Алгоритм или других способов разархивации я найти не сумел.
Поэтому сейчас и решил применить Iternet Transfer - он такие вещи решает сам, да и написание с тестированием заняло полчаса, что есть хорошо.
Не знает ли кто - как определить конец передачи по HTTP1.0 (chunked) или преобразовать полученное по HTTP1.1 в нормальный вид ?