Ja. Ich habe selbst alle (und wirklich alle) Packages in Delphi deinstalliert und die *.bpl Dateien gelöscht. Und musste ich ich alles Packages wieder installieren.
Ich nehm jetzt wieder
Indy 9, da gibts auch den TidICMPClienten.
Dann steig ich um wenn ich Zeit habe.
EDIT:
Zitat:
Set TIdICMPClient.Host to the Host
IP to be checked.
Set TIdICMPClient.ReceiveTimeout to the number of ms to wait.
Call TIdICMPClient.Ping.
Check TIdICMPClient.ReplyStatus.ReplyStatusType.
If the ReplyStatus.ReplyStatusType <> rsTimeOut then it should be safe to
call Connect using the
TCP Client. Otherwise connect will block until the
protocol stack times out.
Ich habs genauso gemacht und die CPU-Auslastung ging auf 100%, sonst passiert nichts. Nach ICMP.Ping ist Schluss;
Nach 2 Minuten hab ich es aufgegeben.
Das hatte es allerdings in einem Thread gemacht.
Ohne Thread funktioniert es!
Auf der Seite schien es bei ihm aber zu klappen, nur bei 2 gleichzeitigen nicht.
Hier mein Code:
Delphi-Quellcode:
var
ICMP:TidICMPClient;
begin
ICMP := TidICMPClient.Create(NIL);
ICMP.Host := Host; //Host, Port, TimeO sind globale Variablen des Thread-Objekts
ICMP.Port := Port;
ICMP.ReceiveTimeout := TimeO;
try
ICMP.Ping;
except
... //Hier Thread beenden
ICMP.Free;
exit;
end;
ICMP.Free;
...
end;
halinchen
P.S. Man muss nicht den ReplyStatus.ReplyStatustype abfragen, sondern den Ping-Befehl in einen try...except...end-Block (zumindest ging es bei mir nur so).