MFC WinINET InternetReadFile-не получается полностью загрузк

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
iAlexander
Сообщения: 4
Зарегистрирован: 03 сен 2004, 12:18

Проблема состоит в следующем:
Используя как пример статью http://rsdn.ru/article/inet/inetapi.xml, сделал быстро загрузчик файлов из Интернета. Для начала пробовал скачивать на диск файлы с localhost'а - замечательно работает.
Но как только попробовал залить реальный файл из Интернета (300 Кб) - начались проблемы. Чтение файла обрывается до нормального завершения (по-разному - 60Кб, 130 Кб,...). Соединение модемное. Пробовал ставить буфер чтения 65535, 350000, 4048 - не помогает. Причем если буфер меньше - передается меньше байт.
Что можно сделать?
Вообще, мне не совсем в данном случае понятен принцип:

Код: Выделить всё

(Пока читается) {
      Читать();
}
Т.е. функция Читать() - InternetReadFile() учитывает непостоянные скорости передачи данных? Если да, то понятно, но мне почему-то теперь кажется, что не очень учитывает. Может, я и неправ.

И еще вопрос: в статье акцентируется необходимость установленного IExplorer'а.
Значит ли это, что функции WinInet используют его настройки? Прокси, например?[/code]
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Дело в том, что контент тебе передаётся кусками (chunk'ами), а не непрерывно. На качественном соединении (даже модемном) размеры этих chunk'ов большие и проблем не возникает. На хреновом соединении chunk'и маленькие и целый класс функций от мелкомягких ведёт себя некорректно (оно и понятно - где им, бедным, плохое-то соединение взять? :) ) Симптомы именно такие, как у тебя. Один из наших админов, а именно Vasilisk знает суть проблемы досконально. Он нас не часто балует своим присутствием, так что попробуй очень вежливо стукнуться к нему в личку. Решения, на сколько я помню, два: одно неправильное - использовать протокол HTTP1.0, другое ( едиснтвенно верное) - перейти на использование непосредственно сокетов (WinSocks).
Даже самый дурацкий замысел можно воплотить мастерски
iAlexander
Сообщения: 4
Зарегистрирован: 03 сен 2004, 12:18

Представляешь, в чем прикол?
Сделал закачку, используя WinSocks. То же самое!!!
Закачка обрывается - и дальнейшие попытки принять данные из сокета безуспешны.
В отчаянии я стал качать файлы с других серверов (до этого я использовал один доступный мне частный хостинг).
И здесь все работает!
Поразительно, но здесь файлы скачивались нормально и гораздо большего размера. Вот такие гримасы судьбы.. (зато у меня теперь библиотечки и WinInet, и WinSocks :o ) Худа без добра не бывает.
Ответить