Ich entwickle ein Programm, das kontinuierlich einen Datenstrom im Hintergrund sendet, und ich möchte dem Benutzer erlauben, eine Obergrenze für das Upload- und Download-Limit festzulegen.Bandbreitenbeschränkung in C#
Ich habe auf den token bucket und leaky bucket algorhithms nachgelesen, und scheinbar der letztere scheint die Beschreibung zu passen, da dies nicht eine Frage der Maximierung der Netzwerkbandbreite ist, sondern eher so unauffällig wie möglich.
Ich bin jedoch ein wenig unsicher, wie ich das umsetzen würde. Ein natürlicher Ansatz besteht darin, die abstrakte Stream-Klasse zu erweitern, um das Erweitern des vorhandenen Datenverkehrs zu vereinfachen, aber würde dies nicht die Einbeziehung zusätzlicher Threads erfordern, um die Daten zu senden, während sie gleichzeitig empfangen (leaky bucket)? Irgendwelche Hinweise auf andere Implementierungen, die dasselbe tun, würden geschätzt werden.
Auch, obwohl ich ändern kann, wie viele Daten das Programm empfängt, wie gut funktioniert die Bandbreitenbeschränkung auf der Ebene C#? Wird der Computer die Daten noch erhalten und einfach speichern, so dass der Drosselungseffekt effektiv aufgehoben wird, oder wartet er, bis ich weitere Informationen erhalte?
EDIT: Ich bin daran interessiert, eingehende und ausgehende Daten zu drosseln, wo ich keine Kontrolle über das andere Ende des Streams habe.
Es wird genauer, wenn Sie "processed" nicht auf "0" setzen, wenn der Timer tickt, aber subtrahiere "maxBytesPerSecond" davon. –