Weiß jemand wie man mit C# Netzwerk Auslastung auslesen kann?

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;
}
Woher ich das weiß:Studium / Ausbildung – Softwareentwickler mit 10 Jahren Berufserfahrung 💾

PrincPersia 
Beitragsersteller
 18.08.2022, 12:55

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.

Knomle  18.08.2022, 14:11
@PrincPersia

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


PrincPersia 
Beitragsersteller
 18.08.2022, 12:03

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.

FaTech  18.08.2022, 12:07
@PrincPersia

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

PrincPersia 
Beitragsersteller
 18.08.2022, 12:07
@FaTech

Kannst du mir wenigstens ein Einfache C# Code schicken? Weil wie soll ich das genau selber herausfinden?

FaTech  18.08.2022, 15:32
@PrincPersia

Google. Zum Programmierer-Dasein, gehört auch die Fähigkeit Google verwenden zu können

PrincPersia 
Beitragsersteller
 18.08.2022, 15:34
@FaTech

Ich hab im Google leider nichts gefunden