Vor einigen Tagen ich in ein ernstes Problem ausführen, die mir Kopfschmerzen gibt:Java: Download Stände immer
Alle Java-basierte Tools (Eclipse Maven, Android SDK loader ...) haben Probleme beim Download von bestimmten Dateien: die Download stoppt nur zufällig.
Ich habe bereits mein Problem bei Superuser beschrieben, aber niemand konnte mir mit meinem Problem helfen. Daher begann ich selbst einige Tests durchzuführen und endete mit dem Beispielcode am Ende dieser Frage.
Der interessante Teil ist, dass die Puffergröße einen kleinen Einfluss auf das Problem hat. Wenn ich die Puffergröße auf 1024 reduziere, wird der Download in den meisten Fällen abgeschlossen.
Macht dieser Code nur Probleme auf meinem Windows-System?
Um es klar zu stellen: Ich möchte kein Download-Programm mit Java entwickeln - daher hilft mir die Korrektur des Beispielcodes nicht - der Code dient nur zur Demonstration des Problems.
public static void main(String[] args) {
try {
URL url = new URL("http://mirror.netcologne.de/maven2/com/google/android/android/2.3.3/android-2.3.3.jar");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream in = conn.getInputStream();
byte[] buffer = new byte[10485760]; // 10MiB
long read = 0;
while (true) {
int bytes = in.read(buffer, 0, buffer.length);
if (bytes < 0)
break;
read += bytes;
System.out.println("Bytes read: " + read);
}
conn.disconnect();
System.out.println("Finished");
} catch (Exception e) {
e.printStackTrace();
}
}
Wie hört es auf? Wird eine Ausnahme ausgelöst? Hängt es? Ist es Timeout? Liest es so viele Bytes aber nicht die ganze Datei? –
@Marlin: Der Datenfluss geht gerade auf Null, keine Exception und kein Timeout. Manchmal stoppt es nach dem Laden von ~ 1,4 MiB manchmal bei 3,2 MiB (oder anderen Werten). – Robert
Wie lange haben Sie gewartet, bis der Datenfluss gestoppt wurde? Wie hoch ist die Umlaufwartezeit, wenn der Datenfluss stoppt? Sie können die Wartezeit mit Ping bestimmen. –