AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Wie Download mit/in mehreren Chunks?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Download mit/in mehreren Chunks?

Ein Thema von Blatt · begonnen am 9. Sep 2010 · letzter Beitrag vom 9. Sep 2010
Antwort Antwort
Blatt

Registriert seit: 8. Sep 2010
17 Beiträge
 
#1

Wie Download mit/in mehreren Chunks?

  Alt 9. Sep 2010, 00:01
Schöne gute Nacht,
ich würde gerne einen kleinen Downloader schreiben, der mir von einer Website bestimmte Dateien herunterlädt. Da es aber sehr viele werden können, dachte ich, es wäre effizient, mit/in mehreren Chunks herunterzuladen, sodass ein wenig mehr 'Power' dahinter ist.
Nun weiß ich gar nicht, wie das eigentlich heißt.. Download
* in mehreren Chunks
* mit mehreren Threads
* mit mehreren Verbindungen

Könnte mir vielleicht jemand aufzeigen, was dahinter steckt, und Tipps geben, wie so etwas zu implementieren sei (vllt. hat jmnd. Beispiele)?

Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Wie Download mit/in mehreren Chunks?

  Alt 9. Sep 2010, 09:28
Chunks sind es definitiv nicht. Wenn du mehrere Downloads gleichzeitig möchtest musst du mehrere Verbindungen aufbauchen. Und damit du auch wirklich gleichzeitig mehrere machen kannst benötigst du auch mehrere Threads (ein Thread kann nur einwas zu gleichen Zeit machen).
Ob das ganze wirklich was bringt hängt von deiner Internetverbindung und den Beschränkungen des Providers ab (Provider = Anbieter der Downloads).

Beispiel1:
- Bandbreite Provider: 1 MBit/s
- keine Bandbreitenbeschränkung pro Verbindung
- Bandbreite deiner Verbindung zum Provider: 500 kb/s
-> kein Geschwindigkeitsgewinn

Beispiel1:
- Bandbreite Provider: 1 MBit/s
- Bandbreitenbeschränkung pro Verbindung 500 kb/s
- Bandbreite deiner Verbindung zum Provider: 1 MBit/s
-> da eine einzelne Verbindung nicht die maximale Bandbreite nutzt bleibt Bandbreite übrig für eine weitere Verbindung -> Geschwindigkeitsgewinn

Aber bei fast allen Providern (außer es sind Downloadseiten) gibt es in der Regel keine Bandbreitenbeschränkung die unter dem liegt was der Benutzer bei sich zu Hause an Bandbreite anliegen hat.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Blatt

Registriert seit: 8. Sep 2010
17 Beiträge
 
#3

AW: Wie Download mit/in mehreren Chunks?

  Alt 9. Sep 2010, 09:49
Achso, sorry, ich meinte mit mehreren Verbindungen eine einzige Datei herunterladen
Also so wie Flashget, etc. nur weiß ich nicht, wie die das machen..
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Wie Download mit/in mehreren Chunks?

  Alt 9. Sep 2010, 09:54
Auch dort gilt das gleiche. Um mehreres gleichzeitig herunter zu laden brauchst du mehrere Threads. Aber auch da bringt das ganze nur etwas wenn deine Verbindung zu Hause schneller ist als eine einzelne Verbindung um die Datei herunter zu laden.
Das Funktionsprinzip ist folgendes. Man fragt erst ab wie groß die Gesamtdatei ist. Dann legt man eine Datei mit dieser Größe an. Anschließend startet man mehrere Verbindungen welche diese Datei füllen. Dabei gibt es dann verschiedene Vorgehensweisen.
Man kann die Dateigröße durch die Anzahl der Verbindungen teilen und lässt dann jede Verbindung den entsprechenden Teil herunterladen (bei TIdHttp und TIdFTP kann man angeben von wo bis wo heruntergeladen werden soll). Die andere Variante ist das man sich vorher festlegt wie groß so ein Teil ist der heruntergeladen werden soll. Zum Beispiel könnte man mit der ersten Verbindung von Stelle 0 bis 1 MB herunterladen und mit der zweiten Verbindung die Stelle 1 MB bis 2 MB. Und sobald eine Verbindung fertig ist lädt man mit dem Thread den nächsten Teil der notwendig ist herunter.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Blatt

Registriert seit: 8. Sep 2010
17 Beiträge
 
#5

AW: Wie Download mit/in mehreren Chunks?

  Alt 9. Sep 2010, 10:11
Ah, ok.
Also TIdHttp mit Ranges, danke!

Es gibt ja auch Downloads, in deren HTTP Headers Content-Length nicht definiert ist.
Wenn die Datei 1 MB groß ist und ich 2 Threads habe, die einfach mal jeweils 2 MB laden sollen, da man die Größe ja nicht kennt, funktioniert das dann synchron, wenn der eine anfängt 2 MB zu laden und der andere auch?

Und was genau ist eine Hang-up Protection?
Falls das zum Thema passt..
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Wie Download mit/in mehreren Chunks?

  Alt 9. Sep 2010, 11:04
Ohne es zu wissen würde ich behaupten Hang-Up Protection ist die Möglichkeit einen abgebrochenen Download fortzusetzen. Wenn dies nicht gegeben ist kann man auch nicht mehrere Teile herunterladen.
Und bei Dateien wo die Größe vorher nicht fest steht kann es sein (je nach Server der dahinter steckt) das es auch nicht möglich ist nur einen bestimmten Teil der Datei herunterzuladen. Denn man sollte wissen das für jede Verbindung die Datei geöffnet wird. Und wenn da eine PHP-Datei dahinter steckt die einem den Download zur Verfügung stellt so wird diese jedesmal aufgerufen aber eben nur ab einer bestimmten Position das zurück geliefert übertragen (je nachdem welchen Range man angibt)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz