Форум: "Сети";
Текущий архив: 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.009 c