Hi.
Bei meinem kleinen Download Manager wollte ich jetzt gerne ein Feature einbauen, um die Download Geschwindigkeit auf einen einstellbaren Wert zu beschränken. Zum Lesen des Socket Input Streams verwende ich den BufferedInputStream, zum Schreiben in eine Datei den BufferedOutputStream. Ich habe das so gecodet, das er die Bytes der letzten Sekunde zählt, sollte das Limit überschritten werden, wird der Rest bis zur vollen Sekunde ermittelt und mit Thread.sleep() schlafen gelegt.
Das funktioniert mehrere Minuten wunderbar, genau so wie ich das wollte.
Aber nach mehreren Minuten, völlig zufällig, erhalte ich folgende Exception, beim Lesen aus dem Input Stream:
java.net.SocketException: Software caused connection abort: recv failed
Ich verstehe leider nicht genau, warum diese Exception kommt, und schon gar nicht, wie ich das Problem beseitige.
Hat jemand eine Idee?
Bei meinem kleinen Download Manager wollte ich jetzt gerne ein Feature einbauen, um die Download Geschwindigkeit auf einen einstellbaren Wert zu beschränken. Zum Lesen des Socket Input Streams verwende ich den BufferedInputStream, zum Schreiben in eine Datei den BufferedOutputStream. Ich habe das so gecodet, das er die Bytes der letzten Sekunde zählt, sollte das Limit überschritten werden, wird der Rest bis zur vollen Sekunde ermittelt und mit Thread.sleep() schlafen gelegt.
Das funktioniert mehrere Minuten wunderbar, genau so wie ich das wollte.
Aber nach mehreren Minuten, völlig zufällig, erhalte ich folgende Exception, beim Lesen aus dem Input Stream:
java.net.SocketException: Software caused connection abort: recv failed
Ich verstehe leider nicht genau, warum diese Exception kommt, und schon gar nicht, wie ich das Problem beseitige.
Hat jemand eine Idee?