C# Netzwerktraffic für einen Prozess anzeigen

.Linux.

Cadet 3rd Year
Registriert
Mai 2010
Beiträge
36
Hallo,

ich bin momentan dabei etwas an meinem "Heimserver" zu basteln und dabei ist mir die Idee gekommen ein kleines Tool zu schreiben das mir den Traffic über die Netzwerkschnittstelle anzeigen kann.
Soweit eigentlich ganz einfach... der Code sieht zwar nicht schön aus, funktioniert aber ganz gut.

Für den momentanen durchsatz hab ich folgende funktion:
(snipp)
PerformanceCounter performanceCounterSent = new PerformanceCounter("Netzwerkschnittstelle", "Bytes gesendet/s", e.Argument.ToString());
PerformanceCounter performanceCounterReceived = new PerformanceCounter("Netzwerkschnittstelle", "Empfangene Bytes/s", e.Argument.ToString());
(snipp)

Für den gesamten durchsatz diese:
(snipp)
long RecCompl = Inter.GetIPv4Statistics().BytesReceived / 1024;
long SendCompl = Inter.GetIPv4Statistics().BytesSent / 1024;
(snipp)

Mit dem PerformanceCounter kann ich den momentanen durchsatz anzeigen der über die Karte geht.

Nun ist mir aber aufgefallen dass ich öfters mal über Remoteverbindung auf den rechner gehe und das mir so meine schöne statistik die ich machen möchte "etwas verhunst" wird.

Meine frage ist nun ob es eine möglichkeit gibt den Netzwerktraffic eines bestimmten Prozesses (von mir aus mal Firefox.exe) separat auszulesen ?
 
Diese Problemstellung riecht ziemlich nach dem Einsatz von WMI. Mit WMI kannste so ziemlich alles abfragen was Windows treibt. Es gibt in .NET dazu den Namespace System.Management.

Kannst dir das ja mal anschauen. Ich habe auch noch eine Quellcodedatei (CSharp) angehängt. Wenn du die kompilierst, erhälst du einen WMI-Browser. Damit kannst du den gesamten Namespace durchbrowsen und er erzeugt dir auch passenden Quellcode zu Sachen die du abfragen möchtest.

Es ist Code von Microsoft selbst, der auch weitergegeben werden darf.
 

Anhänge

Es gibt ein Tool names Netlimiter. Dort kann man gucken welcher Windowsprozess oder welches tool wieviel traffic nutzt.
 
Es gibt sogar ein Tool was "WireShark" heisst, alle Netzwerkpackete abfangen kann und deren Inhalt darstellen kann.... natürlich nur das was den Packet betrifft!
 
Wenn es wirklich darum geht die Information anzuzeigen und nicht um den Spaß daran sowas zu programmieren ;)

Windows bietet diese Funktion in Form des Ressourcenmonitors.
 
@backslash
Kannst du mir dir Lib geben wo es gemacht wird :D

Übrigens können die meisten Firewalls auch die einzelnen Verbindungen anzeigen lassen, wieviel hoch und runtergeladen wurde und den momentanen Durchsatz. Vielleicht haben die eine COM DLL?
 
@roker002

Es heisst immernoch PaKet.

@.Linux.

Wireshark laesst wirklich keinen Wunsch offen
 
Servus,

ich werd mir die sache mit der WMI mal genauer anschauen,
und ja, es geht mir rein um den spaß am programmieren.

Wireshark und den komischen Monitor von Windows kenn ich, die machen nur beide nicht genau das was ich gerne hätte :D

Also dann ma bis die Tage und Danke für die Antworten
 
Zurück
Oben