Как я могу перечислить сокеты для данного процесса Windows? - PullRequest
1 голос
/ 27 августа 2009

Мне нужна моя программа, чтобы проверить, не нарушает ли данный процесс Windows сеть. Я хотел бы перечислить сокеты tcp и udp процесса и посмотреть, сколько данных они передали за определенный период.

Существует ли C или .Net API, который может предоставить такую ​​информацию?

Ответы [ 2 ]

1 голос
/ 28 августа 2009

В Win2k вы можете использовать GetTcpTable (), GetTcp6Table (), GetUdpTable () и GetUdp6Table (), чтобы найти все активные соединения с сокетами. Но чтобы сопоставить их с конкретными идентификаторами процессов, вам придется вручную перечислять открытые дескрипторы системы в поисках дескрипторов TCP / UDP, а затем запрашивать у них информацию о процессе.

В XP вы можете использовать AllocateAndGetTcpExTableFromStack () и AllocateAndGetUdpExTableFromStack (), которые могут возвращать идентификаторы процессов при каждом соединении с сокетом.

В XP SP2 и более поздних версиях вы можете использовать GetExtendedTcpTable () и GetExtendedUdpTable (), которые также могут возвращать идентификаторы процессов при каждом соединении с сокетом.

0 голосов
/ 27 августа 2009

Вы можете посмотреть на WinPcap. http://www.winpcap.org/

Версия C # .net доступна в SharpPcap. http://www.tamirgal.com/blog/page/SharpPcap.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...