Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

Скачивание файлов с использованием 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
9-1084353434
Proger
2004-05-12 13:17
2004.08.29
Маски


14-1091863813
Stany
2004-08-07 11:30
2004.08.29
SUS + WinUpdate


1-1092299878
Fynjy
2004-08-12 12:37
2004.08.29
Манифест и ListBox


4-1089989762
Dima_Delphi
2004-07-16 18:56
2004.08.29
Требуется нормальная стаюильная работа с COM портом под NT.


14-1091809121
Мазут Береговой
2004-08-06 20:18
2004.08.29
Еще одна композиция для 2-х гитар и флейты.