![]() |
Problem bei IdIcmpClient (Ping)
Hallo Leute
Ich habe da ein ganz großes Problem :-( Ich möchte ein Programm schreiben was IPs der Reihe nach anpingt doch es hängt sich dauernd auf :-( Hier mein Code:
Delphi-Quellcode:
Die stelle an der er sich aufhängt habe ich markiert... für den ersten Ping brauch er gar nicht lange doch für jeden danach 1+ sec was mir persönlich viel zu langsam ist -.-
IdIcmpClient1.ReceiveTimeout := StrToInt(floattoStr(JvSpinEdit1.Value)); //Festlegen des Ping-Timeoutes (bei mir 50 ms)
x1 := True; repeat x1 := FALSE; if (JvIPAddress1.AddressValues.Value1 < JvIPAddress2.AddressValues.Value1) then //---Überprüft ob Start-IP kleiner als Ziel-IP (x1 = True) begin x1 := True; end else if (JvIPAddress1.AddressValues.Value1 = JvIPAddress2.AddressValues.Value1) and (JvIPAddress1.AddressValues.Value2 < JvIPAddress2.AddressValues.Value2) then begin x1 := True; end else if (JvIPAddress1.AddressValues.Value1 = JvIPAddress2.AddressValues.Value1) and (JvIPAddress1.AddressValues.Value2 = JvIPAddress2.AddressValues.Value2) and (JvIPAddress1.AddressValues.Value3 < JvIPAddress2.AddressValues.Value3) then begin x1 := True; end else if (JvIPAddress1.AddressValues.Value1 = JvIPAddress2.AddressValues.Value1) and (JvIPAddress1.AddressValues.Value2 = JvIPAddress2.AddressValues.Value2) and (JvIPAddress1.AddressValues.Value3 = JvIPAddress2.AddressValues.Value3) and (JvIPAddress1.AddressValues.Value4 < JvIPAddress2.AddressValues.Value4) then begin x1 := True; end; if not x1 then exit; //Wenn IP-Adresse ungültig, ENDE //IP-Zuweisung: IdIcmpClient1.Host := JvIPAddress1.text; Application.ProcessMessages; //Anpingen IdIcmpClient1.Ping(); //========= HIER FEHLER =============== Application.ProcessMessages; HochzählenIP; //Hier wird die IP um 1 erhöht, externe Funktion //Gib System Zeit Application.ProcessMessages; until (JvIPAddress1.text = JvIPAddress2.text) //Solange ausführen bis Start-IP und Ziel-IP gleich sind Bitte, wo habe ich was falsch gemacht? :wall: |
Re: Problem bei IdIcmpClient (Ping)
Wie wäre es wenn du Eventorientiert Programmierst und auf das Ergebnis des Pings im OnReply/OnStatus-Event wartest bevor du einen neuen Ping absetzt?
|
Re: Problem bei IdIcmpClient (Ping)
könntest du mir sagen wie ich das mache?
Also ich habe ja die möglichkeit mit der Komponente Rückgabewerte ab zu fangen:
Delphi-Quellcode:
Das tue ich ja. aber wie kann ich das in die obere funktion ein bauen?
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus); begin //IP-Ping kommt zurück... if AReplyStatus.FromIpAddress <> '0.0.0.0' then begin Listbox1.Items.Add(AReplyStatus.FromIpAddress); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz