Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   syncronen ICS Ping abbrechen? (https://www.delphipraxis.net/184871-syncronen-ics-ping-abbrechen.html)

newbe 27. Apr 2015 08:10

Delphi-Version: 5

syncronen ICS Ping abbrechen?
 
Hallo zusammen,

ich wollte mal Fragen, ob es möglich ist, einen syncronen ICS Ping abzubrechen. Hintergrund ist, das ich diesen in Threads verwende und er wenns dumm kommt den Thread blockiert bist der Timeout eintritt.

mfg newbe

Klaus01 27. Apr 2015 08:24

AW: syncronen ICS Ping abbrechen?
 
Guten Morgen,

kann der Timeout des Pings nicht entsprechend klein(500ms) wählen.
Denn auch wenn Du den Ping abschiessen willst musst Du ja auch eine
gewisse Zeit abwarten (ob der Ping nicht doch noch erfolgreich ist)
bevor der Ping beendet wird.

Grüße
Klaus

newbe 27. Apr 2015 09:09

AW: syncronen ICS Ping abbrechen?
 
@Klaus

ja natürlich könnte man den Timeout kleiner machen, was aber unschön wäre, da ich dann gegf. nicht wirklich weis, ob die Pakete wirklich verloren gehen oder nur sehr langsam ankommen. Ich habe jetzt als Timeout 3 sekunden angegeben, das ist das was auch der Windows ping macht, wenn ich mich nich irre bzw. er 3 x 1 sekunde nimmt. Problem is ich kann den tread zwar über ne schleifenvariable abbrechen, jedoch nützt das nichts wenn der host halt nicht antwortet, dann wird der thread für 3 sekunden blockiert.

mfg newbe

Klaus01 27. Apr 2015 09:18

AW: syncronen ICS Ping abbrechen?
 
..warum willst Du den Thread vor Ablauf des Timeouts beenden.
Es könnte doch sein, dass innerhalb der 3 Sekunden ein Antwort ankommt.

Was ich damit sagen will, setze den Timeout entsprechend Deiner Netzqualität.
Ein Ping-Response der länger als 500ms benötigt ist doch eher unwahrscheinlich.

Code:
ping www.delphipraxis.net

Pinging www.delphipraxis.net [88.198.53.15] with 32 bytes of data:
Reply from 88.198.53.15: bytes=32 time=125ms TTL=56
Reply from 88.198.53.15: bytes=32 time=52ms TTL=56
Reply from 88.198.53.15: bytes=32 time=250ms TTL=56
Reply from 88.198.53.15: bytes=32 time=113ms TTL=56

Ping statistics for 88.198.53.15:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 52ms, Maximum = 250ms, Average = 135ms

ping www.google.com

Pinging www.google.com [173.194.113.116] with 32 bytes of data:
Reply from 173.194.113.116: bytes=32 time=50ms TTL=58
Reply from 173.194.113.116: bytes=32 time=50ms TTL=58
Reply from 173.194.113.116: bytes=32 time=49ms TTL=58
Reply from 173.194.113.116: bytes=32 time=49ms TTL=58

Ping statistics for 173.194.113.116:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 49ms, Maximum = 50ms, Average = 49ms
Grüße
Klaus

newbe 27. Apr 2015 09:38

AW: syncronen ICS Ping abbrechen?
 
@Klaus

z.B: wenn ich das Programm beende. :) Mainthread und Controls werden freigegeben. Pingthread ist im Timeout und wartet, Syncronize schmeißt dann Access Violation, da VCL controls schon freigegeben sind.

mfg newbe

Sir Rufo 27. Apr 2015 10:11

AW: syncronen ICS Ping abbrechen?
 
Wenn das Programm beendet werden soll, dann sollte der Thread auch nichts mehr zurückmelden.

Das muss man aber programmieren ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz