Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IP Scanner Problem (https://www.delphipraxis.net/91050-ip-scanner-problem.html)

Van HelF 28. Apr 2007 10:30


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:
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;
mein problem:
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 ?

mkinzler 28. Apr 2007 10:34

Re: IP Scanner pProblem
 
Laß mal das
Delphi-Quellcode:
Application.PrecessMessages;
testweise weg

Van HelF 28. Apr 2007 11:15

Re: IP Scanner pProblem
 
Zitat:

Zitat von mkinzler
Laß mal das
Delphi-Quellcode:
Application.PrecessMessages;
testweise weg

bringt leider nichts, dass programm hängt dann nur und wenn die schleife durchgelaufen ist, erscheinen alle einträge auf einmal.

slemke76 20. Mai 2007 16:30

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: Threads mit Delphi

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: ICS-Kompos

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 18:19 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