Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

Скачивание файлов с использованием wininet   Найти похожие ветки 

 
Dimaxx   (2004-06-11 23:24) [0]

Вопрос к мастерам по поводу проверки правильности моих действий (я пишу не все, а только основные действия) и поправьте меня, если что не так:

Используем wininet

Допустим, мне надо закачать файл с сервака в несколько потоков, да еще и с докачкой. Используем переменные:

var
 hSession: HINTERNET;
 hService: HINTERNET;


Открываем сессию командой

hSession:=InternetOpen("MyApp",INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);

Далее открываем URL

hService:=InternetOpenUrl(hSession,PChar(aUrl),nil,0,INTERNET_FLAG_RELOAD,0);

и начинаем скачивать файл командой

dwBytesRead:=1024;
InternetReadFile(hService,@lpBuffer,1024,dwBytesRead);


после скачивания закрываем

InternetCloseHandle(hService);
InternetCloseHandle(hSession);


Все, получили файл на диске.

Это для одного куска файла. Как я понял, для скачивания, скажем, в 4 потока мне нужно открыть столько же раз тот же URL (каждый под своей переменной типа HINTERNET), а потом установить указатель скачиваемого файла в нужную позицию каждого потока с помощью команды InternetSetFilePointer. Далее выполнить скачивание каждой части через InternetReadFile.

Теперь, собственно, вопрос (вернее, два):

1) Как узнать поддерживает ли сервак докачку (ведь и такое бывает)?
2) Как закачивать все потоки одновременно (через Thread или как-то по-другому)?

Может, для данного варианта какие-то флаги специальные нужны и еще что - просветите. Может, у кого есть пример рабочий или сырец какой по этому вопросу, отмыльте, плз.

Спасибо за внимание!


 
Dimaxx   (2004-06-13 22:32) [1]

Что, неужели никто не пользовался?


 
BlackBaracuda ©   (2004-06-26 20:20) [2]

Приведи ПОЛНЫЙ код своей программы.


 
Rouse_ ©   (2004-06-26 20:24) [3]

> Как я понял, для скачивания, скажем, в 4 потока мне нужно
> открыть столько же раз тот же URL (каждый под своей переменной
> типа HINTERNET),

нет, достаточно одной таблЭтки типа hService: HINTERNET;

> Как закачивать все потоки одновременно (через Thread или
> как-то по-другому)?

А разве есть еще какието методы?

> Как узнать поддерживает ли сервак докачку (ведь и такое
> бывает)?

Это в RFC описано по FTP (к сожалению не могу сказать номер, а искать лень :)


 
Dimaxx   (2004-06-28 00:55) [4]

В том-то и дело, что я тока начинаю исследовать эту область и вот возник вопрос. Программы еще нет, пока идет исследование этой области.

2 Rouse_: Ключевое слово, строка (что искать?) И вообще - смысл написания правильный?



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.042 c
14-1092189396
Думкин
2004-08-11 05:56
2004.08.29
С днем рождения! 11 августа


4-1090242754
Death_R
2004-07-19 17:12
2004.08.29
Отключение функциональных клавиш


14-1092062993
default
2004-08-09 18:49
2004.08.29
"Магия" девятки


14-1091960547
Тимур
2004-08-08 14:22
2004.08.29
Чистка реестра


1-1092156246
3APA3A
2004-08-10 20:44
2004.08.29
Работа ListView в режиме vsReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский