![]() |
IP Scanner Problem
Hallo,
ich möchte gerne einen IP Scanner programmieren, habe auch schon einige beiträge hier im foum dazu gelesen. Mein ansatz ist folgender:
Delphi-Quellcode:
mein problem:
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus); var sTime: String; begin if (AReplyStatus.MsRoundTripTime = 0) then sTime := '<1' else sTime := '='; Listbox1.Items.Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms', [AReplyStatus.BytesReceived, AReplyStatus.FromIpAddress, AReplyStatus.SequenceId, AReplyStatus.TimeToLive, sTime, AReplyStatus.MsRoundTripTime])); end; procedure clients_erzeugen; var cl:array[0..5] of TIdIcmpClient; i:integer; begin for i := 0 to 5 do begin cl[i]:=TIdIcmpClient.Create(form1); cl[i].OnReply:=form1.IdIcmpClient1Reply; cl[i].Host := '192.168.33.'+inttostr(i); cl[i].Ping(); application.ProcessMessages; end; end; die pinganfragen laufen leider nicht, wie gehofft, schnell hintereinander ab, sondern extrem langsam. gibt es eine möglichkeit die anfragen, ohne threads parallel, oder zumindest schneller laufen zu lassen ? |
Re: IP Scanner pProblem
Laß mal das
Delphi-Quellcode:
testweise weg
Application.PrecessMessages;
|
Re: IP Scanner pProblem
Zitat:
|
Re: IP Scanner Problem
Hi !
kann es sein, dass es so lange dauert, weil die Antwort des "gegenübers" einen Moment benötigt ? Wenn du einen Scanner programmieren willst - wahrscheinlich also mehrere Hosts durchpingen willst - wäre der Einsatz von einem Thread pro Host sinnvoll. So kannst du den mehrere Pings an verschiedene Hosts gleichzeitig bzw. kurz zeitversetzt starten. Aber Achtung: Nicht zu viele auf einmal, sonst macht XP dicht (Limit der gleichzeitigen Verbindugen erreicht). Zu Threads gibt es hier in der DP ein schönes Tutorial: ![]() Ich habe mit der gleichen Materie auch schonmal rumgespielt und mit den Indy-Kompos Probleme gehabt (in Verbindung mit Threads). Ich weiss aber nicht mehr, ob ich auch probiert habe, auf die damals aktuelle Indy-Version zu updaten ? Ich habe dann die ICS Komponenten verwendet: ![]() Wenn du mit Threads weitermachen solltest, wäre ein wenig Feedback vor dem Hintergrund nett. Grüße, Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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