Bandbreitendrosselung in C #

Ich entwickle ein Programm, das kontinuierlich einen Datenstrom im Hintergrund sendet, und ich möchte dem Benutzer ermöglichen, eine Obergrenze sowohl für das Upload- als auch für das Download-Limit festzulegen.

Ich habe auf dem @ gelestoken bucket undundichter Kübe alghorhithms, und anscheinend scheint letzteres der Beschreibung zu entsprechen, da es nicht darum geht, die Netzwerkbandbreite zu maximieren, sondern möglichst unauffällig zu sein.

Ich bin mir jedoch etwas unsicher, wie ich das umsetzen würde. Ein natürlicher Ansatz besteht darin, die abstrakte Stream-Klasse zu erweitern, um die Erweiterung des vorhandenen Datenverkehrs zu vereinfachen. Erfordert dies jedoch nicht die Einbeziehung zusätzlicher Threads zum Senden der Daten beim gleichzeitigen Empfangen (Leaky Bucket)? Alle Hinweise zu anderen Implementierungen, die dasselbe tun, sind willkommen.

Auch kann ich ändern, wie viele Daten das Programm empfängt, wie gut funktioniert die Bandbreitendrosselung auf C # -Ebene? Empfängt der Computer die Daten weiterhin und speichert sie einfach, wodurch der Drosseleffekt effektiv aufgehoben wird, oder wartet er, bis ich nach weiteren Daten frage?

EDIT: Ich möchte sowohl eingehende als auch ausgehende Daten drosseln, wobei ich keine Kontrolle über das andere Ende des Streams habe.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage