Опция: "Заменять старые файлы - Только при их различии"

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение zed »

Дело обстоит так: когда нужно загрузить тайл, вызывается системная функция InternetOpenURL (WinInet) с соответствующими параметрами и до тех пор, пока САС не вызовет функцию InternetCloseHandle загрузка данных из интернета происходит средствами системы и абсолютно неподконтрольно со стороны САС. И вот, пока система грузит данные, САС последовательно запрашивает у неё StatusCode, затем полностью хидеры ответа сервера, затем ищет поля Content-Type и Content-Lenght в хидерах и принимает решение о запросе у системы тела ответа или о дисконнекте. Поэтому теоретически, при медленном интернете, САС может успеть выполнить все свои проверки до того как система загрузит файл целиком и разорвать соединение, но следует учитывать, что ответ про StatusCode САС получит только после того, как система загрузит некий минимальный буфер и не ранее (размер этого буфера в wininet мне доподлинно не известен).

P.S. Всё вышесказанное справедливо для реализации качалки в САС "на сегодня".
divinets
Новичок
Сообщения: 18
Зарегистрирован: 14 май 2011, 14:52
Поблагодарили: 7 раз

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение divinets »

zed писал(а):минимальный буфер и не ранее (размер этого буфера в wininet мне доподлинно не известен).
У меня например "на глазок" определен это минимальный размер - где-то 2/3 от MTU, меньше не припомню.
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение Parasite »

zed писал(а):Поэтому теоретически, при медленном интернете, САС может успеть выполнить все свои проверки до того как система загрузит файл целиком и разорвать соединение
Что и требовалось доказать. Соответственно при "очень быстром интернете HC<->SAS" в буфер успевает влетать всё, а потом система уже разбирается что к чему и рвет коннект+очищает буфер от хлама. Так как HC ожидает подтверждения принятия пакета, а получает в ответ DISCONNECT - то у себя в статистике он и отмечает "Client disconnected", несмотря на то что данные были таки уже переданы.
Имхо, конечно. В тонкостях реализаций HCшных процедур я не влазил.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
rsuan
Соображающий
Сообщения: 71
Зарегистрирован: 18 июн 2011, 17:46
Благодарил (а): 35 раз
Поблагодарили: 2 раза

Re: ВОПРОСЫ АБСОЛЮТНЫХ НОВИЧКОВ

Сообщение rsuan »

Вот же дебри пошли. Ну, насколько я понял, специалисты склоняются к тому, что обычно скачивается (учитывается в трафике) весь файл, хотя теоретически может скачиваться не весь. В общем-то, тогда смысла в опции "только при их различии" нет (я не к тому, чтобы её убрать).
Спасибо всем, участвующим в обсуждении этого вопроса. Модератору предлагаю вынести посты по этому вопросу в отдельную тему. Может быть, кто-то ещё точности привнесёт.
zOn
Советчик
Сообщения: 254
Зарегистрирован: 03 фев 2009, 01:05
Благодарил (а): 25 раз
Поблагодарили: 19 раз

Re: Опция: "Заменять старые файлы - Только при их различии"

Сообщение zOn »

Расскажу историю:
давным-давно, когда программу писал только Фей, была поднята тема о проверке изменения файлов на гугле. и был найден способ узнавать об этом не скачивая тайл вообще - вместо GET отправлять HEAD. Сначало было счастье, т.к. скорость проверки соответствия тайлов выросла на порядок, а то и 2 порядка. Но счастье длилось не долго, т.к. Гуглу это дело показалось похожим на ддос и он быстренько банил. Пришлось отказаться от данной фичи, но не знаю почему не применять это к другим сервисам (не таким жадным как гугл).
Вот и сказочке конец.
Ответить

Вернуться в «SAS.Планета»