Как измерить пропускную способность интернета - PullRequest
3 голосов
/ 11 июня 2011

У меня проблема и я не могу найти ответы. Я хотел бы измерить пропускную способность интернета с помощью Java, но я не знаю, как.

Было бы здорово получить несколько подсказок; Я знаю, что мне нужно открыть сокет и отправить его на определенный сервер, вернуть его и использовать время.

Но как мне это закодировать?

Ответы [ 2 ]

5 голосов
/ 11 июня 2011

Ну, я бы реализовал это, просто загрузив файл фиксированного размера.Не проверено, но что-то в этом направлении должно работать нормально

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.
1 голос
/ 02 февраля 2012

Как насчет фиксирования произвольного количества времени и отправки данных, относящихся к нему?

Например, скажем, я хочу, чтобы мой сервер ограничил использование полосы пропускания до 100 Байт / с.Поэтому я исправляю 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;
    }
}
...