Home » Tipps & Tricks » Netzwerk/Internet » Internet » Up-/Downloadgeschwindigkeit ermitteln (TIdFTP)

Up-/Downloadgeschwindigkeit ermitteln (TIdFTP)

Die Indy Komponenten stehen zum Download unter www.indyproject.org.In diesem Beispiel wird die Übertragungsgeschwindigkeit der TIdFTP Komponente ermittelt und in KB/s in Label1 ausgegeben.

private
   FTime: Longword;
   FBytes: Longword;


procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
 const AWorkCountMax: Integer);
begin
 FTime := GetTickCount;
 FBytes := 0;
end;

procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
 const AWorkCount: Integer);
begin
 if (GetTickCount - FTime) >= 1000 then
 begin
   label1.caption := Format('%.2f KB/s', [(AWorkCount - FBytes) / (GetTickCount - FTime)]);
   FTime := GetTickCount;
   FBytes := AWorkCount;
   Application.ProcessMessages;
 end;
end;

Das Beispiel lässt sich auch auf andere Indy-Komponenten übertragen, die auf ein OnWorkBegin-Ereignis, das aufgerufen wird, wenn eine Übertragung gestartet wird und ein OnWork-Ereignis, das nach der Bearbeitung eines Pakets ausgelöst wird, zurückgreifen. In der Indy-Library besitzen beispielsweise TIdTCPClient, TIdHTTP, TIdPOP3, TIdSMTP identische Ereignisse.Setzt man eine andere Internet-Komponente ein, die vergleichbare Ereignisse anbietet, lässt sich die o.g. Routine leicht anpassen.