14 votes

Surveiller l'utilisation du réseau par un processus ?

Existe-t-il un moyen en C# ou C/C++ & Win32 de surveiller l'utilisation du réseau par un certain processus (sans que l'application ne soit construite par vous évidemment) ? J'aimerais surveiller un seul processus pendant une heure environ, puis renvoyer les octets utilisés par ce seul processus, comme limewire par exemple.

Est-ce possible ? Je sais que netstat -e sous Windows vous indique le nombre total d'octets envoyés/reçus, mais c'est pour tous les processus.

edit : Si je ne peux pas obtenir l'utilisation d'un seul processus, comment puis-je obtenir les octets envoyés/reçus par l'ensemble du système ? comme netstat l'affiche sauf que je ne veux que les entiers.

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

Je veux juste obtenir 2 variables, comme rec = 2111568926 et sent = 1133174989.

5voto

Sam Saffron Points 56236

Vous pouvez utiliser WinPcap ou écrivez votre propre pilote de périphérique. Je ne pense pas qu'il y ait de compteurs perfmon par processus que vous puissiez exploiter.

5voto

Davy Landman Points 9010

[ 2021 edit : les liens sont morts car le Network Monitor n'est plus utilisé depuis Windows XP. ]

C'est possible, mais si je ne me trompe pas, vous devrez créer un pilote réseau pour filtrer tout le trafic réseau, puis déterminer quel processus a créé le trafic.

Microsoft propose une application gratuite appelée Microsoft Network Monitor 3.2 ( télécharger ). D'après les notes de version, il dispose également d'une api à utiliser.

API de surveillance du réseau : Créez vos propres applications qui capturent, analysent et analyser le trafic réseau !

Voici un article de blog sur ces API .

À mon avis, vous devriez utiliser cette API (ou une autre API telle que WinPcap) pour filtrer le trafic au lieu d'écrire votre propre pilote de périphérique.

3voto

Stas Berkov Points 614

J'ai posé la même question sur le forum MSDN et j'ai obtenu une réponse. Franchement, j'ai essayé. Il a été suggéré d'utiliser ETW. Je n'ai pas compris comment consommer correctement les événements ETW. http://social.msdn.microsoft.com/Forums/en-US/perfmon/thread/b82da95a-1c18-49ce-9bfa-e3d79ec40907

-2voto

grom Points 8057

Limiteur NetLimiter 2

Moniteur de trafic réseau Vous pouvez obtenir la dernière version du logiciel gratuit à l'adresse suivante aquí

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X