Ich wollte für ein Fehlerprotokoll die Möglichkeit geben, den eingestellten Server anzupingen.
Dazu habe ich bei
DSDT einen Code gefunden, den ich für mich modifiziert habe:
Delphi-Quellcode:
procedure TProtokoll.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
var
sTime: String;
begin
if (AReplyStatus.MsRoundTripTime = 0) then
sTime := '<1'
else
sTime := '=';
if (AReplyStatus.MsRoundTripTime>5000) then
Protokoll.Lines.Add('Zeitüberschreitung der Anforderung')
else
Protokoll.Lines.Add(Format('Antwort von %s: Bytes=%d Zeit%s%dms Ping-ID=%d TTL=%d',
[AReplyStatus.FromIpAddress,
AReplyStatus.BytesReceived,
sTime,
AReplyStatus.MsRoundTripTime,
AReplyStatus.SequenceId,
AReplyStatus.TimeToLive]));
end;
procedure TProtokoll.Button2Click(Sender: TObject);
var i:Integer;
begin
IdIcmpClient1.Host := server;
Protokoll.Lines.Add(sLineBreak+'Ping wird ausgeführt für '+server+':');
for i := 1 to 4 do
begin
IdIcmpClient1.Ping;
Application.ProcessMessages;
end;
end;
Leider bekomme ich keinerlei Antwort von aussen, als
IP wird nur 0.0.0.0 angezeigt und es liegt eine Zeitüberschreitung (>5sec) vor.
Ich habe das gleiche über die Kommandozeile von Windows probiert, was problemlos funktioniert.