Paralleler Download, Download Resume?

Alle Fragen zur Netzwerkkommunikation
Antworten
br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Paralleler Download, Download Resume?

Beitrag von br_klaus »

Hallo,
da es hier so viele verschiedene Internet-Komponenten gibt und ich mich da noch überhaupt nicht auskenne, ein paar Fragen:
a) Wie kann man mehrere Dwonloads parallel nebeneinader laufen lassen (wie es viele Downloadmanager machen)?
b) wie kann ich feststellen, wann ein Download abgeschlossen ist?
c) wie läßt sich ein plötzlich unterbrochener Download (zB durch Ausfall der Internetverbindung) wieder fortführen (resume)?
Welche Komponenten kämen dafür am ehesten in Frage?

Ich dachte an eine TStringList mit den URLS aller herunterzuladenden Dateien, die nach und nach geladen werden sollen und auf der Festplatte abgespeichert. ( TStream.savetofile() )
Herzlichen Dank,
P. Nikolaus

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Paralleler Download, Download Resume?

Beitrag von Socke »

br_klaus hat geschrieben:a) Wie kann man mehrere Dwonloads parallel nebeneinader laufen lassen (wie es viele Downloadmanager machen)?

Non-Blocking-Sockets wie in lNet verwenden oder Blocking-Sockets in Threads auslagern.

br_klaus hat geschrieben:b) wie kann ich feststellen, wann ein Download abgeschlossen ist?

Dieses Ereignis wird von allen üblichen Übertragungsprotokollen unterstützt und von Synapse und lNet (Indy höchstwahrscheinlich auch) behandelt.

br_klaus hat geschrieben:c) wie läßt sich ein plötzlich unterbrochener Download (zB durch Ausfall der Internetverbindung) wieder fortführen (resume)?

Das ist protokollabhängig. Für HTTP gibt es entsprechende Header-Felder, die auch der Webserver unterstützen muss. Bei FTP läuft das entsprechend ähnlich.
br_klaus hat geschrieben:Welche Komponenten kämen dafür am ehesten in Frage?

Synapse, lNet oder (eingeschränkt) Indy.

br_klaus hat geschrieben:Ich dachte an eine TStringList mit den URLS aller herunterzuladenden Dateien, die nach und nach geladen werden sollen und auf der Festplatte abgespeichert. ( TStream.savetofile() )

Siehe Erstens. In lNet erstellst du einfach entsprechende Verbindungen und verarbeitest die übertragenen Daten. In Synapse übergibst du deine Liste an einen Threadpool, der für jeden Download einen neuen Thread startet.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten