Code-Beispiel
[LINUX] Netzwerkauslastung ermitteln
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | ThePuppetMaster | 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 | |||||||
---|---|---|---|---|---|---|---|
|
|