我正在课堂上制作一个网络模拟应用程序。我已经完成了整个代码,但是在控制发送的流量速度方面遇到了麻烦。
应用程序的用户可以输入他想要生成的所需速度(例如 10 MiB/s)。我正在以某种非常糟糕的方式进行此控制。我用 Java 制作了一个具有特定字节(例如 8192 字节)的 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;
}
}
我认为这种方法很差,有没有更好的方法来控制它???