Использование Wininet Api

Тема в разделе "MS Visual C++", создана пользователем shisik, 26 авг 2007.

  1. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    Пишу свою качалку для интернета с возможностью докачки файлов. Использую WinInet API. Для организации докачки есть функция InternetSetFilePointer. Только после её использования файл не начинает качаться с указанной позиции, а качается "вхолостую" до указанной позиции, а потом продолжает качаться нормально. При этом функция InternetReadFile не возвращает управление, пока не дойдёт до позиции, указанной в InternetSetFilePointer.
    В интернете я нашел объяснение: проблема в том, что если файла нет в кеше (Temporary Internet Files), то он его скачивает сначала в кеш (целиком), а потом уже дальше. И действительно, пока файл скачан не на 100% в интернет-кеше его нет. Потом, когда скачается полностью, он там появляется.
    Возникает вопрос: можно ли это как-нибудь обойти? Можно ли заставить программу (или wininet) писать недокачанные файлы в интернет-кеш? Или ещё лучше создать свой локальный кеш (чтоб при очистке общего кеша не удалялись файлы), в который и будут скачиваться файлы. Или например чтоб кешем считался сам файл, независимо от его местонахождения. Это был бы самый оптимальный вариант :) В конце концов, другие "качалки" это ж умеют...

    ЗЫ. Возникает вопрос к Microsoft: какой "умный" человек так реализовал InternetSetFilePointer/InternetReadFile?
     
  2. angell

    angell Гость

    Скажите, пожалуйста, как проверить на ошибки программу, написанную в Microsoft Visual C++ 2005 Express Edition
     
  3. shisik

    shisik Well-Known Member

    Регистрация:
    26 авг 2007
    Сообщения:
    154
    Симпатии:
    0
    OMG! Зачем же так некропостить? :) Да и какое вопрос имеет отношение к топику?
     
Загрузка...

Поделиться этой страницей