Контролировать использование сети процессом?

Есть ли способ в C # или C / C ++ и Win32 отслеживать использование сети определенным процессом (очевидно, без того, чтобы это приложение было создано вами)? Я хотел бы отслеживать только 1 процесс в течение часа или около того, а затем возвращать байты, используемые только этим процессом, например, limewire.

Является ли это возможным? Я знаю, что netstat -e в Windows сообщит вам общее количество отправленных/полученных байтов, но это для всех процессов.

редактировать: если я не могу вернуть использование только одного процесса, как я могу получить байты, отправленные/полученные всей системой? как показывает netstat, за исключением того, что мне нужны только целые числа.

eg:

netstat -e

                           Received            Sent

Bytes                    2111568926      1133174989
Unicast packets             3016480         2711006
Non-unicast packets            3122            1100
Discards                          0               0
Errors                            0               0
Unknown protocols                 0

Я просто хочу получить 2 переменные, например rec = 2111568926 и send = 1133174989.


person John T    schedule 13.01.2009    source источник
comment
какой из них вы выбрали для Майка?   -  person Greg    schedule 08.07.2010


Ответы (4)


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

person Sam Saffron    schedule 13.01.2009

[ Редактирование 2021 года: ссылки не работают, поскольку сетевой монитор больше не поддерживается после Windows XP. ]

Это возможно, но если я не ошибаюсь, вам придется создать сетевой драйвер для фильтрации всего сетевого трафика, а затем выяснить, какой процесс создал трафик.

У Microsoft есть для этого бесплатное приложение под названием Microsoft Network Monitor 3.2 (скачать). Согласно примечаниям к выпуску, у него также есть API для использования.

API сетевого монитора: создавайте собственные приложения, которые захватывают, анализируют и анализируют сетевой трафик!

Вот блог сообщение об этих API.

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

person Davy Landman    schedule 13.01.2009

Я задал тот же вопрос на форуме MSDN и получил ответ. Честно говоря пробовали. т.е. пробовал но не очень)) Было предложено использовать ETW. Я не понял, как правильно использовать события ETW. http://social.msdn.microsoft.com/Forums/en-US/perfmon/thread/b82da95a-1c18-49ce-9bfa-e3d79ec40907

person Stanislav Berkov    schedule 12.04.2012

Ограничитель NetLimiter 2

Мониторинг сетевого трафика Вы можете получить последнюю бесплатную версию по адресу здесь

person grom    schedule 13.01.2009
comment
Почему ты -1 и оставляешь комментарий к моему ответу. Вы должны включить это в вопрос. - person grom; 01.02.2011