Может ли WinInet возобновить загрузку файлов без перезапуска?

Я использую комбинацию InternetSetFilePointer, а также InternetReadFile, чтобы поддержать возобновляемую загрузку. Поэтому, когда я начинаю скачивать файл, я проверяю, есть ли у нас его часть, и вызываю InternetSetFilePointer используя размер того, что у нас есть, и тогда я начинаю читать. Это работает... однако вот мое наблюдение:

Если я скачал 90% файла, и мне потребовалось 2 минуты, когда я возобновлю первый звонок InternetReadFile Возвращение занимает около 2 минут! Я могу только заключить, что за кулисами, это просто загрузка файла с самого начала, выбрасывая все до точки, которую я дал InternetSetFilePointer, а затем возвращается со "следующими" данными.

Итак, вопросы:

1) WinInet "симулирует" InternetSetFilePointerИли это действительно дает эту информацию на сервер?

2) Есть ли способ заставить WinInet действительно перейти к нужной точке поиска, при условии, что HTTP-сервер поддерживает это?

Сервер, с которого я загружаю, является сервером Amazon S3, который, я уверен, на 99,9% поддерживает возобновление.

1 ответ

Надлежащий способ сделать это, наконец, появился в результате расширенного поиска, и вот ссылка на хорошую статью об этом:

http://www.clevercomponents.com/articles/article015/resuming.asp

По сути, для правильного возобновления HTTP необходимо использовать HTTP-заголовок Range, чтобы сервер мог правильно распределить ресурс по вашим запросам.

Другие вопросы по тегам