Hi Leute,
Das Thema pingen wurde ja schon 1000 fach behandelt. Ich möchte eine Mini-Anwendung schreiben welche alle 5 Minuten einen Linux Server anpingen soll. Bei nicht erreichen wird ein AlarmSound gespielt.
Zum Pingen nutze ich folgenden Code:
Delphi-Quellcode:
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
var erfolg:Boolean;
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]));
//if AReplyStatus.ReplyStatusType = rsEcho then ShowMessage(AReplyStatus.FromIpAddress+' hat geantwortet');
{ erfolg := AReplyStatus.ReplyStatusType = rsEcho;
if erfolg=true then
showmessage('OK')
else
showmessage('DOWN');
}
end;
//Aufruf
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
IdIcmpClient1.Host := '88.198.25.xxx';
for i := 1 to 4 do
begin
idicmpclient1.ping;
Application.ProcessMessages;
end;
end;
Ich habe schon einige Varianten und Möglichkeiten getestet welche ich der Suchfunktion entnommen habe.
Ich bin als Administrator unter Vista 32 Bit angemeldet, die exe wird auch mit Adminrechten ausgeführt. Pingen unter cmd geht, nur meine Anwendung liefert nix.
0 bytes from 0.0.0.0: icmp_seq 3491 ttl=0 time=10ms
0 bytes from 0.0.0.0: icmp_seq 3491 ttl=0 time=10ms
0 bytes from 0.0.0.0: icmp_seq 3491 ttl=0 time=10ms
0 bytes from 0.0.0.0: icmp_seq 3491 ttl=0 time=10ms
IdIcmpClient1
Host: 88.198.25.xxx
IPVersion: Id_IPv4
Name: IdIcmpClient1
PacketSize: 1024
Port 0
Protocol 1
ProtocolIpv6: 58
ReceiveTimeout: 10
Tag: 0
Was mache ich da wieder falsch?