我有个问题,找不到答案。我想用java来测量网络带宽,但我不知道怎么做。
如果能得到一些提示就太好了;我知道我必须打开一个套接字并将其发送到定义的服务器,取回它,然后使用时间。
但是我该如何编码呢?
我只需下载一个固定大小的文件就可以实现这一点。没有经过测试,但沿着这些路线的东西应该可以正常工作
byte[] buffer = new byte[BUFFERSIZE];
Socket s = new Socket(urlOfKnownFile);
InputStream is = s.getInputStream();
long start = System.nanoTime();
while (is.read(buffer) != -1) continue;
long end = System.nanoTime();
long time = end-start;
// Now we know that it took about time ns to download <filesize>.
// If you don't know the correct filesize you can obviously use the total of all is.read() calls.
修复任意时间并发送相关数据如何?
例如,假设我希望我的服务器将其带宽使用限制为100Bytes/s。因此,我修复1秒并发送数据,只要它不超过1秒和100字节。
这里有一些伪代码来显示我所说的内容:
timer_get (a);
sent_data = 0;
while (not_finished_sending_data)
{
timer_get (b);
if ((b - a) < 1 ) // 1 second
{
if (sent_data < 100) // 100 bytes
{
// We actually send here
sent_data += send();
}
}
else
{
timer_get (a);
sent_data = 0;
}
}