21

バックグラウンドでデータのストリームを継続的に送信するプログラムを開発しています。ユーザーがアップロードとダウンロードの両方の制限に上限を設定できるようにしたいと考えています。

私はトークン バケットリーキー バケットアルゴリズムについて調べましたが、これはネットワーク帯域幅を最大化することではなく、可能な限り控えめであるため、後者が説明に合っているようです。

ただし、これをどのように実装するかについては少しわかりません。自然なアプローチは、抽象 Stream クラスを拡張して既存のトラフィックを簡単に拡張することですが、これには、データを同時に受信しながら送信するための追加のスレッドの関与が必要ではないでしょうか (漏れのあるバケット)? 同じことを行う他の実装に関するヒントをいただければ幸いです。

また、プログラムが受信するデータ量を変更することはできますが、C# レベルでの帯域幅調整はどの程度うまく機能しますか? コンピューターは引き続きデータを受信し、それを保存してスロットリング効果を効果的にキャンセルしますか?それとも、私がさらに受信を要求するまで待機しますか?

EDIT:ストリームの反対側を制御できない、着信データと発信データの両方を調整することに興味があります。

4

2 に答える 2