如何控制Java中的流量速度(发送的字节数)(Jpcap)

时间:2010-07-08 18:10:09

标签: java networking jpcap

我正在课堂上制作网络模拟应用程序。我已经完成了整个代码,但是我在控制发送的流量速度方面遇到了麻烦。

应用程序的用户可以输入他想要生成的所需速度(例如10 MiB / s)。我正在以一种非常糟糕的方式进行这种控制。我在Java中创建了一个具有特定字节的UDP / TCP包(例如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;
     }
}

认为这种方法很差,有没有更好的方法来控制这个?

1 个答案:

答案 0 :(得分:2)

计算出在可达到的带宽内每秒可以发送多少8192个字节的数据包。发送那么多数据包(N),每次睡眠后发送1000 / N毫秒。你必须对其进行微调以考虑实际花费的时间,但你会得到一般的想法。