![]() |
Netzwerkauslastung / Traffic
Wie kann man mit Delphi die Auslastung einer Netzwerkkarte auslesen und verarbeiten? Also einfach wieviel zum aktuellen Zeitpunkt rein und raus geht...
Ich habe schon sehr lange versucht im Internet irgendwas zu diesem Thema zu finden, aber irgendwie gibt es absolut keine Tutorials dazu. Da ich das jedoch unbedingt brauche poste ich einfach mal hier, in der Hoffnung das mir irgendjemand auch nur annähernd sagen kann wie das geht :wink: [edit=sakura]Leerzeichen in der Überschrift untergebracht. Mfg, sakura[/edit] |
Meine Seite Internet-Monitor, ist mit Source.
|
hm, thx, ich werd mir das mal ansehen,
aber ehrlichgesagt ist es nicht gerade einfach sich in einen so umfangreichen fremden Quellcode einzuarbeiten... ich wäre für genauere Hinweise wirklich dankbar :) |
Liste der Anhänge anzeigen (Anzahl: 1)
Die Units von Marcel van Brakel, die ich benutzt habe, liegen bei. Mein Programm sollte dir eigentlich zeige, wie es geht.
Im Anhang noch mal das original Archiv von Marcel van Brakel mit Demo-Programm. |
Ich habs mir gestern mal angesehen und nun funktioniert es optimal,
Danke :) sind die Units Freeware? oder muß man noch nen Copyright vermerk ins Programm rein nehmen? |
Re: Netzwerkauslastung/Traffic
IP Headers saugen ;-)
hier ein beispiel (Zeigt mir den den Traffic der ersten Netzwerkkarte):
Delphi-Quellcode:
[edit=sakura] [delphi]tags Mfg, sakura[/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,Winsock, IpExport, IpHlpApi, IpTypes, IpIfConst, IpRtrMib, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; Memo1: TMemo; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); var MibRow: TMibIfRow; IntfTable: PMibIfTable; Size: DWORD; I: Integer; begin Size := 0; if GetIfTable(nil, Size, True) <> ERROR_INSUFFICIENT_BUFFER then Exit; IntfTable := AllocMem(Size); try if GetIfTable(IntfTable, Size, True) = NO_ERROR then begin for I := 0 to IntfTable^.dwNumEntries - 1 do begin {$R-}MibRow := IntfTable.Table[I];{$R+} if MibRow.dwType <> MIB_IF_TYPE_ETHERNET then Continue; // oder MIB_IF_TYPE_PPP if i = 1 then begin // Welche Verbindung label2.caption := inttostr(MibRow.dwInOctets); label4.Caption := inttostr(MibRow.dwOutOctets); end; end; end; finally FreeMem(IntfTable); end; end; end. |
Re: Netzwerkauslastung / Traffic
ich habe mit dem code folgendes problem:
dwInOctets ist von Typ Cardinal, der maximal knapp über 4Milliarden speichern kann. das entspricht gerade einmal etwas über 4GB. mein LAN traffic ist aber deutlich höher! wie kann ich das also am besten anstellen, dass der traffic nicht plötzlich wieder bei 0 anfängt? gruss, iaby |
Re: Netzwerkauslastung / Traffic
delta ausrechnen seit dem letzten abfragen.
das abfragen machst du z.b. im sekunden takt. |
Re: Netzwerkauslastung / Traffic
das problem ist dann, dass ich es die ganze zeit am laufen haben müsste.
andernfalls könnte ich einfach zwischen durch mal nachschauen! |
Re: Netzwerkauslastung / Traffic
windows resetted den eh nach 4,irgendwas GB, von daher ist das egal
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz