Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Internet und Netzwerke

[LINUX] Netzwerkauslastung ermitteln

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.MitgliedThePuppetMaster 22.01.2008

Dieses Beispiel zeigt, wie unter Linux die Netzwerkauslastung ermittelt werden kann. Dabei wird die temporäre Datei "/proc/net/dev" genutzt, welche eine Statistik über alle Netzwerkgeräte speichert. Sie wird von einer Funktion ausgelesen, und in ihre Einzelteile zerlegt. Anschliessed wird sie in ein Typen-Array geschrieben und kann vom Program ausgewertet,oder angezeigt werden.

'Typenstruktu erstellen
Type netinfo
    device as string
    RXbytes as ULongInt
    RXpackets as ULongInt
    RXerrors as ULongInt
    RXdrop as ULongInt
    RXfifo as ULongInt
    RXframe as ULongInt
    RXcompressed as ULongInt
    RXmulticast as ULongInt
    TXbytes as ULongInt
    TXpackets as ULongInt
    TXerrors as ULongInt
    TXdrop as ULongInt
    TXfifo as ULongInt
    TXframe as ULongInt
    TXcompressed as ULongInt
    TXmulticast as ULongInt
end type
'Auswertfunktion deklarieren
Declare Function F_Usage_Net(B_DD() as netinfo, ByRef B_DC as UByte) as UByte



Dim DD() As netinfo         'Variablen erstellen, welche die Auslastung speichert
Dim DC as UByte             'Variable für die Anzahl der Netzwerkgeräte
Dim X as UByte              'Laufvariable
F_Usage_Net(DD(), DC)       'Netzwerkauslastung einlesen
For X = 1 to DC             'Alle geräte durchgehen
    With DD(X)              'und ausgeben
        Print "Gerät:                   " & .device
        Print "Empfangen [Bytes]:       " & .RXbytes
        Print "Empfangen [Packete]:     " & .RXpackets
        Print "Empfangen [Fehler]:      " & .RXerrors
        Print "Empfangen [Verworfen]:   " & .RXdrop
        Print "Empfangen [FIFO]:        " & .RXfifo
        Print "Empfangen [Frames]:      " & .RXframe
        Print "Empfangen [Komprimiert]: " & .RXcompressed
        Print "Empfangen [Multicast]:   " & .RXmulticast
        Print "Gesendet [Bytes]:        " & .TXbytes
        Print "Gesendet [Packete]:      " & .TXpackets
        Print "Gesendet [Fehler]:       " & .TXerrors
        Print "Gesendet [Verworfen]:    " & .TXdrop
        Print "Gesendet [FIFO]:         " & .TXfifo
        Print "Gesendet [Frames]:       " & .TXframe
        Print "Gesendet [Komprimiert]:  " & .TXcompressed
        Print "Gesendet [Multicast]:    " & .TXmulticast
        Print ""
    End With
Next



'Netzwerkauslastung ermitteln und in Array einarbeiten
Function F_Usage_Net(B_DD() as netinfo, ByRef B_DC as UByte) as UByte
B_DC = 0
Dim XFID as Integer
Dim D as String
Dim DD() as String
Dim DC as Long
Dim X as Long
XFID = FreeFile
Open "/proc/net/dev" for input as #XFID
Do
    Input #XFID, D
    X += 1
    If X > 2 Then
        If D <> "" Then
            DC += 1
            Redim Preserve DD(DC) as String
            DD(DC) = D
        End If
    End If
    If D = "" Then Exit Do
Loop
Close #XFID
Dim T as String
Dim XPos as UShort
Dim TD() as ULongInt
Dim TC as Long
Dim XN as String
For X = 1 to DC
    D = DD(X)
    TC = 0
    XPos = InStr(1, D, ":")
    If XPos > 0 Then
        XN = Trim(Mid(D, 1, XPos - 1))
        D = Trim(Mid(D, XPos + 1))
        Do
            XPos = InStr(1, D, " ")
            If XPos > 0 Then
                T = Trim(Mid(D, 1, XPos - 1))
                D = Mid(D, XPos + 1)
            Else: T = D: D = ""
            End If
            If T <> "" Then
                TC += 1: Redim Preserve TD(TC) as ULongInt
                TD(TC) = ValLng(T)
            End If
            If D = "" Then Exit Do
        Loop
        If TC = 16 Then
            B_DC += 1
            Redim Preserve B_DD(B_DC) as netinfo
            With B_DD(B_DC)
                .device = XN
                .RXbytes = TD(1)
                .RXpackets = TD(2)
                .RXerrors = TD(3)
                .RXdrop = TD(4)
                .RXfifo = TD(5)
                .RXframe = TD(6)
                .RXcompressed = TD(7)
                .RXmulticast = TD(8)
                .TXbytes = TD(9)
                .TXpackets = TD(10)
                .TXerrors = TD(11)
                .TXdrop = TD(12)
                .TXfifo = TD(13)
                .TXframe = TD(14)
                .TXcompressed = TD(15)
                .TXmulticast = TD(16)
            End With
            If B_DC = 255 Then Exit For
        End If
    End if
Next
Return 0
End Function

Zusätzliche Informationen und Funktionen
  Bearbeiten Bearbeiten  

  Versionen Versionen