www org mapwindows mapwindow espaƱol c# winapi network-monitoring

c# - org - mapwindows 5



Monitorear el uso de la red de un proceso? (4)

¿Hay alguna forma en C # o C / C ++ & Win32 para monitorear el uso de la red de cierto proceso (sin que esa aplicación sea construida por usted, obviamente)? Me gustaría monitorear solo 1 proceso durante aproximadamente una hora, luego devolver los bytes utilizados solo por ese proceso, como limewire, por ejemplo.

¿Es posible? Sé que netstat -e en Windows te dirá el total de bytes enviados / recibidos, pero eso es para todos los procesos.

editar: si no puedo devolver solo un uso de procesos, ¿cómo puedo obtener los bytes enviados / recibidos por todo el sistema? como se muestra netstat, excepto que solo quiero los enteros.

p.ej:

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

Solo quiero obtener 2 variables, como rec = 2111568926 y enviado = 1133174989


Es posible, pero si no me equivoco, tendrá que crear un controlador de red para filtrar todo el tráfico de red y averiguar qué proceso creó el tráfico.

Microsoft tiene una aplicación gratuita llamada Microsoft Network Monitor 3.2 ( descargar ). De acuerdo con las notas de la versión, también tiene una API para usar.

Network Monitor API: crea tus propias aplicaciones que capturan, analizan y analizan el tráfico de red.

Aquí hay una publicación de blog sobre estas API .

En mi opinión, debería usar esta API (u otra API como WinPcap) para filtrar el tráfico en lugar de escribir su propio controlador de dispositivo.


Puede usar WinPcap para esto o escribir su propio controlador de dispositivo. No creo que haya ningún contador perfmon por proceso que pueda aprovechar.