Я делаю приложение сетевого моделирования в своем классе. Я уже сделал весь код, однако у меня возникают проблемы с контролем скорости отправляемого трафика.
Пользователь приложения может ввести желаемую скорость, которую он хочет сгенерировать (например, 10 МБ / с). Я делаю этот контроль каким-то действительно дурацким способом. Я сделал пакет UDP / TCP в Java, который имеет определенные байты (например, 8192 байта). Зная это, я создал поток, который длится одну секунду, и продолжает проверять, достиг ли он уже своего лимита (в секундах или размере), и продолжает посылать, пока не достигнет. Следующий алгоритм объясняет мою дерьмовую идею.
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;
}
}
Я думаю , что этот подход довольно плохой, есть ли лучший способ контролировать это ???