Einzelnen Beitrag anzeigen

Benutzerbild von Calimero
Calimero

Registriert seit: 8. Mär 2003
Ort: Krefeld
69 Beiträge
 
Delphi 6 Personal
 
#12

Re: Netzwerkauslastung / Traffic

  Alt 3. Jul 2004, 16:05
Da sehr viele sich intressieren dafür wie man die Geschwindigkeit ermittelt hier

Das Beispiel zeigt den aktuellen Speed der ersten Netzwerkkarte (incoming Traffic) an (in kb/s)

Den Speed des Timers auf 1000 (1 sekunde)

Code:
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;
    Label1: TLabel;
    procedure Timer1Timer(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  old: integer;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var MibRow: TMibIfRow;
IntfTable: PMibIfTable;
Size: DWORD;
I: Integer;
wert: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
       wert := MibRow.dwInOctets - old;


                      label1.caption := floattostr(round(Wert /1024 *100)/100) + ' KB/s';
                     old := MibRow.dwInOctets

                     end;
  end;
    end;


    finally
    FreeMem(IntfTable);
  end;

end;


end.
***** I like Delphi & Rapidq and C *****
  Mit Zitat antworten Zitat