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

Вниз

многопотовый загрузчик файлов   Найти похожие ветки 

 
gedd   (2003-08-11 10:51) [0]

Кто нибудь знает как сделать многопотовый загрузчик файлов
компоненты idhttp idftp не подходят!


 
Reindeer Moss Eater   (2003-08-11 11:05) [1]

Чем же они не подходят?


 
Lahtak   (2003-08-11 12:18) [2]

лучше всего сделать через URLMON, у меня очень шустро работает,
или через WinInet


 
gedd   (2003-08-12 11:18) [3]

Поподробнее про URLMON пожалуйста!
лучше с кодом
через WinInet работает только коряво
например почему то в начальный момент
не определяет размер файла


 
Zelius   (2003-08-12 13:45) [4]


> Reindeer Moss Eater © (11.08.03 11:05) [1]

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


 
nikkie   (2003-08-12 14:09) [5]

>Zelius
ничего не понял... может ты тоже чего-то не умеешь?

>Lahtak
про urlmon я бы тоже послушал, только сдается мне, что это будет тот же WinInet. а недавно совсем обсуждали, что WinInet не позволяет использовать более 4 потоков.


 
Reindeer Moss Eater   (2003-08-12 14:13) [6]

> Reindeer Moss Eater © (11.08.03 11:05) [1]

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

Неужели? Вот не знал о таком несчастье. И как же я до сих пользовался этой библиотекой????


 
Zelius   (2003-08-12 17:42) [7]


> nikkie © (12.08.03 14:09) [5]

более того, чего-то я точно не умею :)
если ты знаешь, как двумя TidHTTP скачивать паралельно один файл, один с нуля до середины и второй с середины до конца, то поделись знанием!


 
Zelius   (2003-08-12 17:42) [8]


> Reindeer Moss Eater © (12.08.03 14:13) [6]

поедлись знанием, я так и не нашел ответа


 
nikkie   (2003-08-12 17:58) [9]

idhttp.request.from должен помочь. только у мя ощущение, у тя проблемы в другом, м что ты пытаешься паралельно в один файл с двух разных мест писать :))


 
Е-Моё имя   (2003-08-12 17:59) [10]

2 зелиус

посмотри лог регета, и будет тебе знание


 
Reindeer Moss Eater   (2003-08-12 18:17) [11]

Zelius © (12.08.03 17:42) [8]
> Reindeer Moss Eater © (12.08.03 14:13) [6]
поедлись знанием, я так и не нашел ответа


С тобой поделиться знанием как скачивать partial content, или как сохранять полученные байты в нужное место?

Или ты надеешся на существование магического метода у TidHTTP, "который_делает_как_тебе_надо"?


 
Zelius   (2003-08-12 20:23) [12]


> nikkie © (12.08.03 17:58) [9]

странные у тебя советы, интересно чем это мне мыло может помочь?


> Reindeer Moss Eater © (12.08.03 18:17) [11]

и то и то другое мне известно. Я говорю о том, что когда хочешь скачать кусок файла методом procedure TidHTTP.Get(AURL: string; const AResponseContent: TStream); overload;
то размер файла устанавливается в размер скачиваемого куска, что сильно мешает при многопотоковой скачки файла.


 
Palladin   (2003-08-12 20:48) [13]

тем же чем и мочалка...


 
Reindeer Moss Eater   (2003-08-13 09:25) [14]

> Reindeer Moss Eater © (12.08.03 18:17) [11]
Я говорю о том, что когда хочешь скачать кусок файла методом procedure TidHTTP.Get(AURL: string; const AResponseContent: TStream); overload;
то размер файла устанавливается в размер скачиваемого куска, что сильно мешает при многопотоковой скачки файла.


Да кто это тебе сказал? Школьный учитель пения что ли?


 
Reindeer Moss Eater   (2003-08-13 09:32) [15]

nikkie © (12.08.03 17:58) [9]
только у мя ощущение, у тя проблемы в другом, м что ты пытаешься паралельно в один файл с двух разных мест писать :))

Так он же надеется, что все экземпляры TidHTTP знают друг про друга все и работают слаженно без усилий сто стороны пользователя компонент.


 
Zelius   (2003-08-13 10:27) [16]


> Reindeer Moss Eater © (13.08.03 09:32) [15]

в отличии от тебя, похоже, я исходный код видел...


 
Reindeer Moss Eater   (2003-08-13 10:29) [17]

Zelius ©
в отличии от тебя, похоже, я исходный код видел...
Похвально.
Понял в нем что-нибудь?


 
Zelius   (2003-08-13 10:53) [18]


> Reindeer Moss Eater © (13.08.03 10:29) [17]

конечно, могу тебе объяснить ( хотя уже все и так объяснил, а ты не смог понять), а то ты бедняга смотришь в книгу и видишь фигу, только выеживаться и умеешь...


 
Reindeer Moss Eater   (2003-08-13 10:59) [19]

На, не плач. Может тоже что-нибудь увидишь.

var
Msg :string;
fStream :=TFileStream;
begin
Msg:="Я сильно заблуждался насчет библиотеки Indy"#13#10;
fStream:=TFileStream.Create("test.txt",fmOpenWrite);
fStream.WriteBuffer(Msg[1],Length(Msg));
IdHTTP1.Get(" http://www.delphimaster.ru/cgi-bin/forum.pl?n=4",fStream) ;
fStream.Free;
end;


 
Zelius   (2003-08-13 11:35) [20]


> Reindeer Moss Eater © (13.08.03 10:59) [19]

посмотри в конце размер файла и извинись...

procedure TForm1.Button1Click(Sender: TObject);
var
Msg: string;
fStream: TFileStream;
begin
Msg := "Я самый умный, потому что сам не пробовал, но думаю, что все должно работать так как Я хочу!"#13#10+
"Поэтому могу выпендриваться и раздовать дурацкие советы направо и налево, хотя сам никогда не пробовал так делать!"#13#10;

fStream := TFileStream.Create( "test.txt", fmCreate);
try
fStream.Size := 100000;
fStream.WriteBuffer( Msg[1], Length(Msg));
fStream.Position := 0;
IdHTTP1.Get( " http://www.delphimaster.ru/cgi-bin/forum.pl?n=4", fStream);
finally
fStream.Free;
end;
end;


 
Reindeer Moss Eater   (2003-08-13 11:41) [21]

посмотри в конце размер файла и извинись...

Посмотри на свой код, пойми что ты делаешь, и задумайся над своей способностью понимать советы старших.


 
Zelius   (2003-08-13 11:52) [22]


> Reindeer Moss Eater © (13.08.03 11:41) [21]

Я написал тот код, который мне нужен. Или ты считаешь, что многопоточная закачка файлов идет последовательно? Значит я не ошибся с написанным сообщением. Ладно, остынь, ты безнадежен, слушать старших, впавших досрочно в старческий маразм, не моё хобби.


 
Reindeer Moss Eater   (2003-08-13 11:54) [23]

Тебе был дан пример, показывающий, что
Get пишет в ResponseContent с текущей позиции в потоке назначения, ничего в нем не меняя.
Из этого еще не следует, что тебе советовали в разных потоках создавать FileStream на один и тот же файл.
Тебе давали понять, что запись в итоговый файл данных, полученных в разных нитках - это твоя забота, а не разработчиков компонент.
Собирай данные в памяти, и пиши поблочно в свой файл наздоровье, соблюдая нужные смещения.

Вот так-то, молодой человек без хобби.


 
Reindeer Moss Eater   (2003-08-13 12:00) [24]

тем, что инди не умеет писать в середину потока,

Так это Indy не умеет, или маленький ослик не умеет пользоваться Indy?


 
$hade   (2003-08-13 12:16) [25]

наверное все-таки 2е...
только все равно - злой ты какой-то...:-)


 
Reindeer Moss Eater   (2003-08-13 12:21) [26]

Я злой, но я вежливый по возможности.


 
Zelius   (2003-08-13 13:00) [27]


> Reindeer Moss Eater ©

Извини, ты злой и невежливый одновременно, плюс еще и невнимательный, поверь наслово...
А в середину потока как раз инди писать и не умеет, что я и доказал примером. Попробуй запусти, ты все поймешь... А для интереса, попробуй скачать не 10 Кб, а 10 Гб


 
Е-Моё имя   (2003-08-13 13:08) [28]

ну ты братец и тупица...

fStream.Position := 0;
не ты ли написал?


 
Reindeer Moss Eater   (2003-08-13 13:10) [29]

Внимательный и умный Zelius. Пойми одну простую истину.
Данные в твой файл пишет не Indy.
В твой файл данные пишет метод класса TFileStream.
Перед тобой виноваты разработчики класса TFileStream, а не разработчики Indy.

Попробуй запусти, ты все поймешь... А для интереса, попробуй скачать не 10 Кб, а 10 Гб

Я это делал, делаю, и еще долго буду делать и без твоих любезных предложений.


 
Zelius   (2003-08-13 13:14) [30]


> Е-Моё имя © (13.08.03 13:08) [28]

ну-ну, добро пожаловать в клуб не внимательных... тупиц ( хотя хотелось выразиться крепче), а то Reindeer Moss Eater там одному скушно наверное... если я так написал, значит мне это было нужно... представь себе, что второй кусок скачается первым, не знаю, способен ли ты на это...


 
Zelius   (2003-08-13 13:16) [31]


> Reindeer Moss Eater © (13.08.03 13:10) [29]

нет, ты все таки туповат от природы и ленив к тому же, если до сих пор не залез в исходники и не посмотрел как инди работает с потоком... У меня к тебе больше претензий нет, можешь не отвечать.


 
Reindeer Moss Eater   (2003-08-13 13:19) [32]

...если я так написал, значит мне это было нужно...

Долго смеялся.


 
Reindeer Moss Eater   (2003-08-13 13:22) [33]

Пишет так, как ему нужно, а работает так, как ему не нужно.
Любая шимпанзе в зоопарке уже давно бы догадалась попробовать сделать наоборот.


 
Zelius   (2003-08-13 13:26) [34]


> Reindeer Moss Eater © (13.08.03 13:22) [33]

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


 
Reindeer Moss Eater   (2003-08-13 13:28) [35]

инди не умеет писать в середину потока

Тебе русским языком сказали, что не Indy пишет туда.
Пишет метод класса конкретного потока, экземпляр которого передан методу Get.


 
Reindeer Moss Eater   (2003-08-13 13:29) [36]

Собирай данные в памяти, и пиши поблочно в свой файл наздоровье, соблюдая нужные смещения.

Вот это видел? Читал? Буквы понял?


 
nikkie   (2003-08-13 13:34) [37]

>Zelius
по поводу From вместо ContentRangeStart - виноват, ошибся. помнил, что это задается в Request, но быстрым взглядом промахнулся.

и все равно, проблемы твоей я не понимаю. речь идет о многопотоковой закачке? и ты хочешь, чтобы 2 потока (threads) писали в один поток (stream)?


 
Reindeer Moss Eater   (2003-08-13 13:35) [38]

"Ему так надо" :)


 
Zelius   (2003-08-13 15:52) [39]


> nikkie © (13.08.03 13:34) [37]

Да, скачиваю большой файл, открываю несколько файловых потоков на один файл и пишу прямо туда. С партиальной скачкой файлов у меня нет проблем, да у меня и вообще нету с этим проблем, все давно работает. Просто если бы Инди не выставляла размер потока как она это делает, то не пришлось бы рожать промежуточных буферов. Вот и все что я хотел сказать :)


 
Reindeer Moss Eater   (2003-08-13 15:54) [40]

Просто если бы Инди не выставляла размер потока как она это делает.

До парня никак не доходит, что это делает не Indy.



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

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

Наверх




Память: 0.53 MB
Время: 0.016 c
9-40220
Арм
2003-03-03 04:17
2003.10.13
Выбор объектов в OpenGL


1-40506
Recruit
2003-10-02 07:55
2003.10.13
Какая функция в Delphi аналогична паскалевской Delay?


1-40468
Vladimir
2003-10-02 10:56
2003.10.13
Как определить, содержит ли строка допустимый путь и имя файла


1-40454
Шустрый
2003-10-02 17:42
2003.10.13
Поиск текста


6-40551
SM
2003-08-07 15:33
2003.10.13
Как избавиться от сообщения об ошибке при попытке коннекта сокета





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский