Einzelnen Beitrag anzeigen

Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#1

Mehrere TIdIcmpClient funktionieren nicht richtig?

  Alt 4. Jun 2007, 09:16
Hallo Leute!

Ich schreibe gerade ein Programm, welches verschiedene Verbindungen testet, indem es immer wieder einen Ping an verschiedene Hosts sendet. Hierzu benutze ich die Indy Komponente TIdIcmpClient (Indy 10). Für jeden Host wird ein Thread erzeugt, der dann jeweils einen TIdIcmpClient enthält. Die Ergebnisse werden in einer Logdatei gespeichert. Und jetzt treten zwei eigenartige Dinge auf:
Zitat:
Fall 1

1 Thread erzeugt, mit Host "www.google.de"
--> Funktioniert wie erwartet: Echo

1 weiteren Thread erzeugt mit Host "www.yahoo.de"
--> Funktioniert wie erwartet: beide Echo

Nach kurzer Zeit pingt einer der beiden nicht weiter
--> Dieser TIdIcmpCLient "steckt fest" in Der TIdIcmpClient.Ping(); Methode | Wird die Anwendung über den Debugger pausiert, dann wird erst der Timeout empfangen, vorher nicht. Das OnReply Event wird erst nach dem Pausieren gefeuert. Die Zeit zum Timout ist sehr hoch, zum beispiel 50000ms obwohl ReceiveTimout 5000 ist. Der andere Client funktioniert wie gewünscht -> Sobald einer der Clients einen Timeout erhält, bleibt er stecken, bis das Programm pausiert wurde.
Zitat:
Fall 2

1 Thread erzeugt, mit Host 192.222.222.222 (Also garantiert nicht existent)
--> Funktioniert wie erwartet: Timout

1 weiteren Thread hinzugefügt mit Host "www.google.de"
--> Beide Pings erhalten nun ein Echo, obwohl der eine Host garantiert nicht existiert. Die Zeit ist bei beiden Ergebnissen gleich -> Sie beide kriegen die gleiche Antwort
[edit]Dies ist nur so, wenn der nicht esistierende Host zuerst da ist, ansonsten tritt Fall 1 auf (Keine Antwort)[/edit]
Liegt dieses Verhalten an meinem Programm oder ist das Verhalten typisch für die TIdIcmpClients? Kann/Sollte man nur einen Client pro Anwendung benutzen?

Danke schonmal im Vorraus

Richard
Richard Mahr
  Mit Zitat antworten Zitat