Ich habe einen einfachen Java Downloader geschrieben und ich habe Probleme mit der Geschwindigkeit.
Zuerst ist die Geschwindigkeit in Ordnung - genau wie wenn ich meinen Browser verwende, um diese Datei herunterzuladen. Aber nach einer Weile nimmt die Geschwindigkeit stark ab und wechselt alle zwei Sekunden - von 42kb / s auf 64kb / s und von 64kb / s auf 42kb / s.
Mein Code:
%Vor%Was soll ich tun, um die Geschwindigkeit des Downloads zu maximieren?
AKTUALISIEREN
Die Dateigrößen variieren zwischen 1 und ca. 100 MB. Ich habe den Puffer auf 65536 erhöht, bis er gleich ist.
Über das Messen: Ich überprüfe alle 3 Sekunden, wie viele Bytes geschrieben wurden, und teile es dann durch 3 und durch 1024 - es gibt mir kb / s
Geschwindigkeit zu erhöhen, bis an die Grenze Ihrer Bandbreite und Serverkapazität soll eine Anwendung mehrere Verbindungen verwendet (mehr als nur ein) mit Multi-Threaded-Code: jeder Thread erstellt eine eigene Verbindung und Anfragen für Teile der Datei.
Ein Beispiel für eine solche Anwendung ist IBM Download-Direktor die drei HTTP-Verbindungen häufig verwendet, um große Dateien abrufen. Die meisten FTP-Clients können auch mit mehreren Verbindungen arbeiten, um den Durchsatz zu erhöhen. In Java, Apache Httpclient verwendet werden Anwendung zu schreiben, eine solche Multi-Threading.
Sie haben das in Ihrer URL verwendete Protokoll nicht beschrieben. Wenn HTTP, gibt ein HEAD
Anfrage die Dateilänge und GET
mit Unterstützung Chunking verwendet wird für die Dateiteile abzufragen.
Wahrscheinlich können Sie eine bessere Leistung sogar mit einer einzigen Verbindung, wenn Sie direkt HttpURLConnection verwenden und Wert für ChunkedStreamingMode.
Wenn Sie noch nicht zufrieden sind, geben Sie bitte weitere Einzelheiten an: