Измерение сетевого трафика в C#

Мне бы хотелось, чтобы мое приложение могло отслеживать, сколько данных (мне не нужны фактические пакеты, только количество байтов), которые постоянно поступают на компьютер (по одному интерфейсу), а также за все время. время. Другими словами; Я хочу, чтобы была возможность отображать число, отображающее текущую скорость вверх и вниз (например, 5 КБ / с), а также график за последние 5 минут, и, наконец, я также хочу иметь возможность отображать правильный объем данных, который имеет вышел / в интерфейс за последний час.

Это выполнимо простым способом? Однако я не возражаю против использования сторонних сборок или необходимости создавать свою собственную оболочку для некоторых win32 API; указанные сторонние сборки должны быть в состоянии использоваться с приложениями с открытым исходным кодом и не должны стоить денег.

3 ответа

Решение

На самом деле вы можете легко получить весь сетевой трафик, используя счетчики производительности, но я не знаю никакого способа измерить сетевой трафик вашего приложения, кроме как открыть каждый пакет и прочитать его. Чтобы измерить весь сетевой трафик, обратитесь к следующему: сетевой трафик в C#

Что-то вроде DUMeter?

Посмотри здесь

Возможно, вы захотите взглянуть на счетчики производительности.

Снимок экрана от perfmon

На большинстве этих сетевых счетчиков вы можете выбрать сетевой интерфейс, который необходимо отслеживать. То же самое можно сделать и в.Net-коде.

Вот статья CodeProject, содержащая приложение форм, которое в основном выполняет то, что вам нужно: http://www.codeproject.com/Articles/6259/Monitoring-network-speed

Другие вопросы по тегам