Home » Tutorials » Netzwerk und Internet » Indy
Indy
ICMP (TIdICMPClient)
ICMP allgemein
ICMP (Internet Control Message Protocol) ist ein Protokoll, um Kontrollbotschaften zuversenden. Es wird insbesondere zur Diagnose von Verbindungsproblemen verwendet. Dabei werden vor allem Ping und TraceRoute verwendet. Bei Ping wird eine Anfrage an einen Host geschickt und eine Antwort aufgefangen. Dabei ist es interessant zu erfahren, ob eine Antwort zurückkommt und wie lange diese braucht. TraceRoute ist sozusagen eine Kette von Pings an verschiedene Rechner. Damit lässt sich nachverfolgen, welchen Weg eine Anfrage an einen Server nimmt. Alle Zwischenstationen melden zurück, wenn sie die Anfrage erhalten haben.
Siehe auch
- RFC 792, Internet Control Message Protocol, September 1981
IdICMPClient
Wir schreiben ein kleines Beispielprogramm, das einen Ping ausführt:
Memo1.Clear; IdIcmpClient1.Host := edHost.Text; IdIcmpClient1.ReceiveTimeout := 5000; IdIcmpClient1.Ping; case IdIcmpClient1.ReplyStatus.ReplyStatusType of rsEcho: begin Memo1.Lines.Append(format('response from host %s in %d millisec.', [IdIcmpClient1.ReplyStatus.FromIpAddress, IdIcmpClient1.ReplyStatus.MsRoundTripTime])); end; rsError: Memo1.Lines.Append('Unknown error.'); rsTimeOut: Memo1.Lines.Append('Timed out.'); rsErrorUnreachable: Memo1.Lines.Append(format('Host %s reports destination network unreachable.', [IdIcmpClient1.ReplyStatus.FromIpAddress])); rsErrorTTLExceeded: Memo1.Lines.Append(format('Hope %d %s: TTL expired.', [IdIcmpClient1.ReceiveTimeout, IdIcmpClient1.ReplyStatus.FromIpAddress])); end; // case