Einzelnen Beitrag anzeigen

Benutzerbild von nTE
nTE

Registriert seit: 8. Sep 2003
60 Beiträge
 
#13

Re: ping in Delphi ausführen

  Alt 9. Sep 2003, 00:33
Ich bin neu hier und das ist mein erster Eintrag also:
Hallo erstmal!

So, nun aber zum Problem.

Ich habe vor drei Hostnamen nacheinander anzupingen. Allerdings habe ich folgendes Problem:
Wenn ich die Pings direkt hintereinander mache, kommt es dazu, dass die Funktion Ping false liefert und das obwohl alle 3 Server erreichbar sind.
Warte ich nun eine gewisse Weile zwischen den Pings (z.B. 1,5 Sekunden) geht alles glatt.
Ich möchte aber nicht zwangläufig diese Pflichtwartezeit zwischen den Pings haben, sondern, sobald der Ping erfolgreich (oder auch nicht) war, den nächsten ausführen.
Es wäre nett, wenn mir da jemand helfen könnte und ich habe mit Absicht in diesem Thread geschrieben, da ich keine Indy-Ping Geschichte anstrebe sondern eben IcmpSendEcho.

Das Debuggen gestaltet sich für mich als sehr schwer, da im Einzelschrittmodus natürlich alles glatt läuft, da jeder Server seine Zeit bekommt um zu antworten (meiner Meinung nach liegt das Problem darin, dass sich die Pings "überlappen").


Der Source der Funktion Ping:
(TranslateStringToTInAddr dient freilich zur Namesauflösung)

Delphi-Quellcode:
function Ping(InetAddress : string) : boolean;
var
 Handle : THandle;
 InAddr : IPAddr;
 DW : DWORD;
 rep : array[1..128] of byte;
begin
  result := false;
  Handle := IcmpCreateFile;
  if Handle = INVALID_HANDLE_VALUE then
   Exit;
  TranslateStringToTInAddr(InetAddress, InAddr);
  DW := IcmpSendEcho(Handle, InAddr, nil, 0, nil, @rep, 128, 0);
  Result := (DW <> 0);
  IcmpCloseHandle(Handle);
end;
Ok, schonmal danke im Vorraus.
cya
  Mit Zitat antworten Zitat