2009-01-13 16 views
12

¿Hay alguna manera en C# o C/C++ & Win32 para supervisar el uso de red de un cierto proceso (sin esa aplicación creada 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.¿Monitorea el uso de la red de un proceso?

¿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.

por ejemplo:

 
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 

sólo quiero conseguir 2 variables, como rec = 2111568926 y enviados = 1133174989

+0

¿cuál fuiste para Mike? – Greg

Respuesta

5

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

5

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 (download). De acuerdo con las notas de la versión, también tiene una API para usar.

Monitor de red API: Crear sus propias aplicaciones que captura, analizar y analizar el tráfico de la red!

Here is a blog post about these API's.

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

Cuestiones relacionadas