Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Gleiche Datei parallel herunterladen (https://www.delphipraxis.net/64404-gleiche-datei-parallel-herunterladen.html)

PierreB 3. Mär 2006 09:22


Gleiche Datei parallel herunterladen
 
Moin,

sry für den komischen Titel, was anderes ist mir nicht eingefallen. Es geht um folgendes:

Downloadmanager wie GetRight oder LeechGet können eine Datei mehrmals zu gleichen Zeit herunterladen, d.h. die Datei wird in 3 Teile zerlegt und dann alles auf einmal heruntergeladen. Somit wird der Downloadspeed erheblich erhöht, dass merkt man vor allem bei ISDN. Ich hoffe ihr wisst was genau ich meine ?

Jetzt frage ich mich natürlich wie man sowas auch mit Delphi hinbekommen könnte. Indy - Sockets ? Hat da jemand ne Idee ?

Thx

Mystic 3. Mär 2006 10:01

Re: Gleiche Datei parallel herunterladen
 
Mittels des Content-Range Headers kannst du angeben welches Stück der Datei du haben willst.

PierreB 3. Mär 2006 11:25

Re: Gleiche Datei parallel herunterladen
 
Ah, danke, so geht es:
Delphi-Quellcode:
IdHttp1.Request.ContentRangeStart:=1000; //bei Byte 1000 Download anfangen
IdHttp1.Request.ContentRangeEnd:=2000; //bei Byte 2000 Download beenden
Jetzt hab ich nur das Problem das ich gerne jedes Mal manuell einstellen möchte wieviele Teil-Downloads es geben soll. Jetzt wäre es sicher nicht sehr elegant 8 IdHttp-Komponenten auf die Form zu klatschen, hat da jemand ne bessere Idee ?

//Nachtrag: Ginge doch vielleicht mittels Threads, oder ? Ich guck derweil mal Luckie's Tutorial an...

SirThornberry 3. Mär 2006 11:35

Re: Gleiche Datei parallel herunterladen
 
ich würde das ganze auch nicht auf die Form "klatschen" sondern zur Laufzeit erzeugen. Da die downloads gleichzeitig stattfinden sollen wird der Download ja wohl in Threads stattfinden, und genau da solltest du auch das TIdHttp erzeugen damit alles notwendige auch wirklich in dem Threadcontext erzeugt wird und nicht im Context des Haupttrheads.

himitsu 3. Mär 2006 11:44

Re: Gleiche Datei parallel herunterladen
 
Jupp, es sollte mit Threads funktionieren und am Besten, wie Mr.Thornberry schon sagte, die Kompunenten erst im Thread erzeugen.


Na ja, als erstes sollte man sich wohl nur mal den Dateiheader runterladen, damit man die Gesamstgröße der Datei erhält.

Delphi-Quellcode:
i := Dateigröße div 8;
IdHttp1.Request.ContentRangeStart := 0;
IdHttp1.Request.ContentRangeEnd  := i - 1;
IdHttp2.Request.ContentRangeStart := i;
IdHttp2.Request.ContentRangeEnd  := i * 2 - 1;
IdHttp3.Request.ContentRangeStart := i * 2;
IdHttp3.Request.ContentRangeEnd  := i * 3 - 1;
IdHttp4.Request.ContentRangeStart := i * 3;
IdHttp4.Request.ContentRangeEnd  := i * 4 - 1;
IdHttp5.Request.ContentRangeStart := i * 4;
IdHttp5.Request.ContentRangeEnd  := i * 5 - 1;
IdHttp6.Request.ContentRangeStart := i * 5;
IdHttp6.Request.ContentRangeEnd  := i * 6 - 1;
IdHttp7.Request.ContentRangeStart := i * 6;
IdHttp7.Request.ContentRangeEnd  := i * 7 - 1;
IdHttp8.Request.ContentRangeStart := i * 7;
IdHttp8.Request.ContentRangeEnd  := Dateigröße;

PierreB 3. Mär 2006 11:50

Re: Gleiche Datei parallel herunterladen
 
Joa danke,

ich werd die Geschichte mal versuchen. :-)

mr47 4. Mär 2006 00:02

Re: Gleiche Datei parallel herunterladen
 
Ich hab mal noch ne Frage, für die sich kein eigener Thread lohnt: Kann man so auch Downloads pausieren und fortsetzen? Ich lad einfach immer so 200 KB runter, dann schreib ich die neue Stelle (Bytes) in eine Datei. Wenn ich dann das Programm beende und wieder starte, frag ich die Stelle ab und lade einfach ab dieser Stelle weiter... Oder geht das auch einfacher?


mfg mr47

Luckie 4. Mär 2006 00:29

Re: Gleiche Datei parallel herunterladen
 
Kommt auf den Server an, ob der Resume unterstützt.

mr47 4. Mär 2006 01:01

Re: Gleiche Datei parallel herunterladen
 
Zitat:

Zitat von Luckie
Kommt auf den Server an, ob der Resume unterstützt.

Die meisten tun das ja heute... Danke!


mr47 :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz