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.