Hallo zusammen,
ich schreibe gerade an einem Java-Download-Manager. Dieser soll die Funktion erhalten, die maximale DL-Übertragungsrate nach Wunsch auf ein eingestelltes Maximum zu limitieren. Die Netzwerk-Datenübertragung basiert in meinem Programm auf non-blocking NIO SocketChannels.
Die einfachste Möglichkeit wäre es natürlich, jede Sekunde die empfangenen Bytes zu zählen und dann bei Erreichen des Limits bis zum Ende dieser Sekunde zu warten (also keine Daten mehr zu übertragen). Dieser Ansatz gefällt mir aber nicht, da so ja der Download bis zum Erreichen des Limits auf voller Geschwindigkeit läuft, um danach komplett zu stoppen, dann wieder voller Download, kompletter Stop, voller Download, etc. pp.
Ich suche stattdessen nach einer Lösung, die mir die DL-Geschwindigkeit konstakt auf dem eingestellen Maximum/Limit hält.
Für diese Anforderung gibt es bestimmt einen Lösungansatz, oder? Ich habe schon gegoogelt und bin auf einige Vorschläge zum Thema gestossen. Allerdings schlagen die meisten davon die oben beschriebene, unschöne Lösung vor; die anderen Vorschläge sind ziemlich kompliziert. Ich würde mich über eine schlanke Lösung freuen...
Hat jemand eine Idee? Bin für jeden Vorschlag offen
Danke schon mal im Voraus!
Viele Grüße, Matthias
ich schreibe gerade an einem Java-Download-Manager. Dieser soll die Funktion erhalten, die maximale DL-Übertragungsrate nach Wunsch auf ein eingestelltes Maximum zu limitieren. Die Netzwerk-Datenübertragung basiert in meinem Programm auf non-blocking NIO SocketChannels.
Die einfachste Möglichkeit wäre es natürlich, jede Sekunde die empfangenen Bytes zu zählen und dann bei Erreichen des Limits bis zum Ende dieser Sekunde zu warten (also keine Daten mehr zu übertragen). Dieser Ansatz gefällt mir aber nicht, da so ja der Download bis zum Erreichen des Limits auf voller Geschwindigkeit läuft, um danach komplett zu stoppen, dann wieder voller Download, kompletter Stop, voller Download, etc. pp.
Ich suche stattdessen nach einer Lösung, die mir die DL-Geschwindigkeit konstakt auf dem eingestellen Maximum/Limit hält.
Für diese Anforderung gibt es bestimmt einen Lösungansatz, oder? Ich habe schon gegoogelt und bin auf einige Vorschläge zum Thema gestossen. Allerdings schlagen die meisten davon die oben beschriebene, unschöne Lösung vor; die anderen Vorschläge sind ziemlich kompliziert. Ich würde mich über eine schlanke Lösung freuen...
Hat jemand eine Idee? Bin für jeden Vorschlag offen
Danke schon mal im Voraus!
Viele Grüße, Matthias