我有問題,無法找到答案。我想用java測量互聯網帶寬,但我不知道如何。如何測量互聯網帶寬
這將是偉大的,得到一些提示;我知道我必須打開一個套接字並將其發送給定義的服務器,然後將其重新使用並使用時間。
但是,我會如何編碼?
我有問題,無法找到答案。我想用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;
}
}
你說的是由Java程序本身所使用的帶寬? – 2011-06-10 21:13:33