Weiß jemand wie man mit C# Netzwerk Auslastung auslesen kann?
Hallo.
Also ich wollte fragen wie man unter Programmier C# die Netzwerk Auslastung auslesen kann (Da wo anzeigt wie viel Mbit mein Internet zieht). Weil später möchte ich das von Mbit in Megabyte umrechnen und so machen das mein Programm anzeigt wie viel Datenvolume ich verbraucht habe.
2 Antworten
Es gibt einen kleinen Unterschied zwischen der Netzwerkauslastung und dem Internetverbrauch. In deinem Netzwerk geht immer mal wieder Traffic zur Kommunikation unter den Geräten hin und her. Was alles über deinen Provider geht ist nicht so einfach zu messen.
Aber generell kannst du auf die Schnittstelle im .NET zugreifen, die auch im Task-Manager angezeigt wird. Das kannst du folgendermaßen. Ich habe dir zwei Funktionen geschrieben, die dir die Auslastung eines Netzwerkadapters zurückgeben. Alternativ kannst du dir natürlich alle Adapter anzeigen lassen.
Die Dokumentation dazu findest du hier: NetworkInterface Klasse
private string GetBytesSent(string Adapter)
{
if (NetworkInterface.GetIsNetworkAvailable())
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
if(ni.Name == Adapter)
{
return ni.GetIPv4Statistics().BytesSent.ToString();
}
}
}
return null;
}
private string GetBytesReceived(string Adapter)
{
if (NetworkInterface.GetIsNetworkAvailable())
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
if(ni.Name == Adapter)
{
return ni.GetIPv4Statistics().BytesReceived.ToString();
}
}
}
return null;
}
Ich habe meine Antwort angepasst. Da fehlt am Ende noch ein return null, denn die if-Abfrage könnte auch negativ sein und dann gäbe die Funktion nichts zurück.
Du musst in deinem Code natürlich darauf reagieren, wenn de Funktion nichts zurückliefert.
LG Knom
Du müsstest dir eine VPN-Schnittstelle bauen und dein Internet da durch gehen lassen. Dann könntest du den Datenverbrauch exakt mitschreiben.
Wenn du Windows Benutzer bist, kannst du aber auch in den Windows Einstellungen schauen. Dort wird es auch mit geschrieben oder du schaust mit C# in die Einstellungen
Wiso gerade nur mit VPN, wenn selbst in Taskmanager die Netzwerk Auslastung steht? Ja ich bin Windows besitzer und habe selber recherchiert aber nichts wirklich vernümpftiges gefunden.
Windows selbst trackt das mit. Ob die da selber noch eine Schnittstelle zwischen haben ... Wahrscheinlich. Du kannst es aber, wie gesagt, auch von Windows klauen die Angaben. Entweder du findest raus, wie Windows das macht, wo die das speichern oder du ließt es aus eine Anwendung von Microsoft aus
Kannst du mir wenigstens ein Einfache C# Code schicken? Weil wie soll ich das genau selber herausfinden?
Google. Zum Programmierer-Dasein, gehört auch die Fähigkeit Google verwenden zu können
Bei private string GetBytesReceived(string Adapter) und private string GetBytesSent(string Adapter) meckert der Visual Studio mit Fehler: Form1.GetBytesSent(string)": Nicht alle Codepfade geben einen Wert zurück.