Java(JPCAP)でトラフィックスピード(送信バイト)を制御する方法
-
13-09-2020 - |
質問
私は私のクラスにネットワークシミュレーションアプリケーションを作成しています。私はすでにコード全体をしましたが、送信されたトラフィックの速度を制御するのに問題があります。
アプリのユーザは、生成したい望ましい速度を入力することができる(例えば10 MIB / s)。私はこのコントロールをいくつかの本当に厳しい方法でやっています。特定のバイト数(たとえば8192バイト)を持つJavaにUDP / TCPパッケージを作成しました。これを知っています次のアルゴリズムは私のぎくしゃくアイデアを説明しています。
sendWithLimit (byte limit, JpcapSender sender, Packet pkg) {
byte current = 0;
long timeStamp = System.currentTimeMillis();
while ((current < limit) && (System.currentTimeMillis() - timeStamp < 1000))
sender.send(pkg);
current += 8192;
}
}
.
i このアプローチがかなり悪いことを考える、これを制御するためのより良い方法はありますか???
解決
達成可能な帯域幅内に1秒あたり8192バイトのパケット数を取り出します。その多くのパケット(N)を送信し、各1回のスリープ後に1000 / nミリ秒の間に送信します。あなたは実際に送信を費やした時間のためにそれを微調整する必要がありますが、あなたは一般的な考えを得ます。
所属していません StackOverflow