Мониторинг данных в / из компьютера через vb.net - PullRequest
0 голосов
/ 16 декабря 2009

Я хочу создать измеритель пропускной способности для Windows, используя vb.net, но я не могу найти ничего в .net Framework для мониторинга количества данных, входящих и исходящих. Я хочу создать это, потому что я не могу найти хорошего бесплатно, и я думаю, что это то, что люди могут хотеть.

Если в .net Framework нет ничего для мониторинга этого, можно ли сделать несколько вызовов P / Invoke? Если да, то что они?

Возможен ли этот проект? Я хочу попытаться измерить точный объем данных, поступающих и выводимых из ВСЕХ программ и соединений, если это возможно.

Спасибо за помощь!

РЕДАКТИРОВАТЬ: Чтобы уточнить, хотя я сомневаюсь, что будет что-то простое, как My.Computer.Network.IO или что-то в этом роде, я не хочу делать это слишком сложным.

ИЗМЕНИТЬ СНОВА: Возможно, это будет слишком сложно. Если бы я просто хотел отслеживать активность http на порте 80, как бы я мог это сделать, не затрагивая данные?

Ответы [ 6 ]

1 голос
/ 16 декабря 2009

Существует несколько счетчиков производительности, которые дают базовые значения пропускной способности сетевой карты. Начните с просмотра Perfmon.exe, вы увидите их категорию, имя и имя экземпляра. Эти же числа доступны в классе .NET PerformanceCounter.

Использование их для измерения пропускной способности довольно сложно, вы, скорее всего, измерите пропускную способность сервера, с которым вы разговариваете, в сочетании с дюжиной маршрутизаторов, которые передают IP-сообщение на вашу машину.

1 голос
/ 16 декабря 2009

Лучше всего использовать счетчики производительности или WMI и делать выборки с удобной для вас частотой. Если вы пытаетесь получить что-то похожее на количество байтов в свойствах сетевой карты, эти счетчики находятся в наборе счетчиков производительности.

Если вы пытаетесь также измерить все устройства (USB и т. Д.), Вам, вероятно, потребуется написать собственные драйверы клиента для перехвата событий передачи данных.

1 голос
/ 16 декабря 2009

Вот несколько возможностей:

1 голос
/ 16 декабря 2009

Вы можете легко обмануть это:

  1. Создать процесс с помощью cmd.exe
  2. Вызвать команду `netstat -e 10 '(на 10 секунд)
  3. Передача вывода обратно в ваше приложение в качестве входного потока
  4. Разбор входного потока
  5. Если пользователь решает выйти из программы, отправьте в процесс последовательность прерывания ctrl-c.

Что вы думаете?

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 16 декабря 2009

Некоторые возможности:

  • WinPCap - однако не выдаст вам приложение
  • LSP - загружается как DLL в любой процесс, использующий Winsock. Дает вам все, что вы хотели бы отслеживать трафик для каждого приложения, но не так просто написать.
  • WMI - Совокупные итоги по сетевому интерфейсу: http://msdn.microsoft.com/en-us/library/aa394293(VS.85).aspx
1 голос
/ 16 декабря 2009

Вам нужно спуститься на уровень драйвера, контролировать ваше устройство Ethernet и подсчитывать количество байтов, приходящих и выходящих.

Это будет связано с P / Invoke, я почти уверен. Не думай, что это так просто ...

...