Измерение полосы пропускания, используемой при передаче файлов с помощью Java-сокетов - PullRequest
2 голосов
/ 09 декабря 2011

Кто-нибудь знает, как это сделать? используя сокеты Java

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Это может быть достигнуто путем украшения входных и выходных потоков сокета.

Так что это может выглядеть так:

class SocketWrapper extends Socket {
    private CountingInputStream input;

    @Override
    public InputStream getInputStream() throws IOException {
        if (input == null) {
            input = new CountingInputStream(super.getInputStream());
        }

        return input;
    }

    public int getInputCounter() {
        return input.getCounter();
    }

    // other stuff like getOutputStream
}

class CountingInputStream extends InputStream {
    private final InputStream inputStream;

    public CountingInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    private int counter = 0;

    public int getCounter() {
        return counter;
    }

    @Override
    public int read() throws IOException {
        counter++;
        return inputStream.read();
    }

    // other methods
}

Также посмотрите здесь и здесь .

И, наконец, если вы просто хотите узнать объем трафика, вы можете использовать снифферы.

0 голосов
/ 09 декабря 2011

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

...