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
Paralleler Download, Download Resume?
-
- 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?
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein