Измерение сетевого трафика в C#
Мне бы хотелось, чтобы мое приложение могло отслеживать, сколько данных (мне не нужны фактические пакеты, только количество байтов), которые постоянно поступают на компьютер (по одному интерфейсу), а также за все время. время. Другими словами; Я хочу, чтобы была возможность отображать число, отображающее текущую скорость вверх и вниз (например, 5 КБ / с), а также график за последние 5 минут, и, наконец, я также хочу иметь возможность отображать правильный объем данных, который имеет вышел / в интерфейс за последний час.
Это выполнимо простым способом? Однако я не возражаю против использования сторонних сборок или необходимости создавать свою собственную оболочку для некоторых win32 API; указанные сторонние сборки должны быть в состоянии использоваться с приложениями с открытым исходным кодом и не должны стоить денег.
3 ответа
На самом деле вы можете легко получить весь сетевой трафик, используя счетчики производительности, но я не знаю никакого способа измерить сетевой трафик вашего приложения, кроме как открыть каждый пакет и прочитать его. Чтобы измерить весь сетевой трафик, обратитесь к следующему: сетевой трафик в C#
Возможно, вы захотите взглянуть на счетчики производительности.
На большинстве этих сетевых счетчиков вы можете выбрать сетевой интерфейс, который необходимо отслеживать. То же самое можно сделать и в.Net-коде.
Вот статья CodeProject, содержащая приложение форм, которое в основном выполняет то, что вам нужно: http://www.codeproject.com/Articles/6259/Monitoring-network-speed