source: trunk/Packages/synapse/source/demo/scan/Scan.dpr

Last change on this file was 2, checked in by chronos, 12 years ago
  • Přidáno: Základní kostra projektu.
  • Přidáno: Knihovna synapse.
File size: 2.6 KB
Line 
1program Scan;
2
3{$APPTYPE CONSOLE}
4
5uses SysUtils, IPUtils, PingThread;
6
7var i,j:Cardinal;
8 Ping:Array of TPingResult;
9 PingCount,Cardinal1,Cardinal2:Cardinal;
10 Puffer:String;
11 ThreadArray:Array of TPingThread;
12 ThreadsComplete:Boolean;
13begin
14 WriteLn;
15 WriteLn('Scan v1.0');
16 WriteLn('Synapse Demo Application');
17 WriteLn('(c)2003 by Christian Brosius');
18 WriteLn;
19 if (ParamCount = 2)and // Parse Commandline
20 (IsIPAdress(ParamStr(1)))and
21 (IsIPAdress(ParamStr(2)))
22 then
23 begin
24 Cardinal1 := IPToCardinal(StrToIP(ParamStr(1)));
25 Cardinal2 := IPToCardinal(StrToIP(ParamStr(2)));
26 // Count of Adresses to ping
27 PingCount := (Cardinal2 - Cardinal1) + 1;
28
29 // Show Adresscount to User
30 Write('Pinging ' + IntToStr(PingCount) + ' Adresses');
31 // Initialize dyn. Arrays
32 SetLength(Ping,PingCount);
33 SetLength(ThreadArray,PingCount);
34 j := 0;
35 for i := Cardinal1 to Cardinal2 do
36 begin
37 Ping[j].IPAdress := IPToStr(CardinalToIP(i));
38 Ping[j].Exists := false;
39 Inc(j);
40 end;
41
42 // Create one Thread for each Ping
43 for i := 0 to PingCount-1 do
44 begin
45 ThreadArray[i] := TPingThread.Create(Ping[i]);
46 end;
47
48 Write(' ');
49
50 // Wait till all threads are executed
51 repeat
52 ThreadsComplete := true;
53 Write('.');
54 Sleep(1000);
55 for i := 0 to PingCount-1 do
56 begin
57 if not ThreadArray[i].Ready
58 then
59 begin
60 ThreadsComplete := false;
61 break;
62 end;
63 end;
64 until ThreadsComplete;
65
66 WriteLn;
67 WriteLn;
68
69 // Show Results to User
70 for i := 0 to PingCount-1 do
71 begin
72 if ThreadArray[i].PingResult.Exists
73 then
74 begin
75 Puffer := IntToStr(i+1) + ' ' + ThreadArray[i].PingResult.IPAdress;
76 WriteLn(Puffer);
77 end;
78 end;
79
80 // Free Threads
81 for i := 0 to PingCount-1 do
82 begin
83 ThreadArray[i].Free;
84 end;
85 end
86 else
87 begin
88 WriteLn('Syntax: Scan StartIP StopIP');
89 WriteLn;
90 WriteLn('Description:');
91 WriteLn(' With Scan you can do a very fast scan of Adresses on your Network-Segment.');
92 WriteLn;
93 WriteLn('Example: scan 192.168.50.1 192.168.50.254');
94 end;
95end.
Note: See TracBrowser for help on using the repository browser.