Home » Tipps & Tricks » Netzwerk/Internet » Netzwerk » Pingen mithilfe der Indy-Komponenten
Pingen mithilfe der Indy-Komponenten
Folgender Artikel zeigt, wie man mithilfe der Indy-Komponenten einen Host pingen kann. Ab Delphi 6 sind diese Komponenten bei Delphi dabei. Besitzer älterer Versionen können Sie unter www.indyproject.org kostenlos herunterladen (siehe Verweise). Die benötigte Komponente trägt den Namen IdIcmpClient.Erstelle einen OnReply-Eventhandler und schreibe folgendes in die Ereignis-Procedure:
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent; const AReplyStatus: TReplyStatus); var sTime: String; begin if (AReplyStatus.MsRoundTripTime = 0) then sTime := '< 1' else sTime := '='; Listbox1.Items.Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms', [AReplyStatus.BytesReceived, AReplyStatus.FromIpAddress, AReplyStatus.SequenceId, AReplyStatus.TimeToLive, sTime, AReplyStatus.MsRoundTripTime])); end;
Du kannst dann folgendermaßen einen Server anpingen:
procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin IdIcmpClient1.Host := 'www.delphi-treff.de'; for i := 1 to 4 do begin IdIcmpClient1.Ping; Application.ProcessMessages; end; end;
Die Eigenschaft ‚Host‘ enthält den Server. Die Methode ‚Ping‘ führt den Ping aus. Die Ergebnisse werden der Listbox hinzugefügt. In diesem Fall werden vier Ping-Versuche gestartet.
Ein Ping-Ergebnis enthält 5 Werte.
- AReplyStatus.BytesReceived gibt die Größe des Packets zurück.AReplyStatus.
- FromIpAddress gibt die IP-Adresse des gepingten Hosts an.
- AReplyStatus.SequenceId enthält eine fortlaufende ID. Bei mehreren Ping-Versuchen sollte die ID durchgängig sein, da dies ein Zeichen dafür ist, dass kein Packet verloren ging.
- AReplyStatus.TimeToLive – Passiert das Paket einen Router wird dieser Wert um 1 dekrementiert. Ist dieser Wert bei 0 angelangt, stirbt das Paket. So wird sichergestellt, dass ein Paket nicht endlos im Internet verbleibt.
- AReplyStatus.MsRoundTripTime gibt die Zeit zurück, die ein Packet vom Sender zum Host und wieder zurück gebraucht hat.