クラスでネットワークシミュレーションアプリケーションを作成しています。私はすでにコード全体を実行しましたが、送信されるトラフィックの速度を制御するのに問題があります。
アプリのユーザーは、生成したい速度(たとえば、10 MiB / s)を入力できます。私はこのコントロールを本当にくだらない方法でやっています。特定のバイト(たとえば、8192バイト)を持つUDP/TCPパッケージをJavaで作成しました。これを知って、私は1秒間続くスレッドを作成し、それがすでに制限(秒またはサイズ)に達しているかどうかをチェックし続け、達するまで送信を続けます。次のアルゴリズムは私のくだらない考えを説明しています。
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;
}
}
このアプローチはかなり貧弱だと思いますが、これを制御するためのより良い方法はありますか?