Мне нужно определить статистику использования сети для каждого процесса, аналогично тому, что может делать TCPView.
Пример http://img513.imageshack.us/img513/861/6601f15814544055a590e26.png
Итак, прежде чем вы застрелите меня за публикацию дубликата этого вопроса или этого вопроса , я хотел бы отметить, что ни у одного из них нет подробного ответа, который мог бы помочь мне на самом деле сделать это.
Я занимался исследованиями, и есть много способов перечислить активные соединения и связанные с ними процессы, будь то с помощью netstat или других оконных API, таких как IpHlpAPI.dll .
Теперь, исходя из того, что я сделал в Google, я не нашел много - за исключением этих смутных терминов: GetPerTcpConnectionEStats и GetPerTcp6ConnectionEStats . Предположительно для TCP через IPv4 и IPv6 соответственно. Теперь, где я читал, якобы способен делать то, что мне нужно. Тем не менее, это все еще не учитывает UDP. И они также недоступны в системах XP, на которых работает TCPViewer.
Я был бы доволен их использованием для TCP, но проблема в том, что я не могу найти примеры их использования из C #.
Итак, я думаю, все сводится к следующим вопросам:
- Кто-нибудь на самом деле знает, как это делает TCPView?
- Как использовать GetPerTcpConnectionEStats для TCP? Или это может даже выполнить то, что я предлагаю?
- Есть ли другая известная альтернатива, которая будет работать для UDP?
Весь смысл в том, чтобы увидеть независимое использование полосы пропускания самими процессами. Не рассчитывать общее использование пропускной способности системы.
Заранее спасибо за любые ответы.