Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Сканер сети   Найти похожие ветки 

 
Ron   (2004-02-23 12:09) [0]

народ, может кто знает как сделать сканер сети средствами WinSock через массив? А то у меня что-то не получается... :(


 
Verg ©   (2004-02-23 13:25) [1]

Не мучайся, не стОит... Возьми готовый http://www.oxid.it/


 
Verg ©   (2004-02-23 13:27) [2]

.... особенно если

> средствами WinSock через массив


:))


 
Anatoly Podgoretsky ©   (2004-02-23 13:32) [3]

Объявить массив и все рахличие по сравнению с переменной это использование идекса для обращения
Вместо V образаться так V[i]
Но может рано заниматься сканерами, а потратить усилия на изучения основ Паскаля, в том числе и массивы.


 
ALeX.B. ©   (2004-02-27 11:57) [4]

Тебе надо алгоритм перебора айпишников? Если да то смотри
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Ping, IdBaseComponent, IdComponent, IdRawBase,
 IdRawClient, IdIcmpClient;

type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Button1: TButton;
   startip: TEdit;
   endip: TEdit;
   IdIcmpClient1: TIdIcmpClient;
   procedure Button1Click(Sender: TObject);
   procedure IdIcmpClient1Reply(ASender: TComponent;
     const AReplyStatus: TReplyStatus);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
Form1: TForm1;
var x, y, t: array [1..4] of integer; i: byte;
implementation

{$R *.dfm}
procedure scannet(a, b: byte);

begin
for i := a to b do
begin
Form1.IdIcmpClient1.Host := InttoStr(x[1]) + "." + InttoStr(x[2]) + "." + InttoStr(x[3]) + "." + InttoStr(i);
Form1.IdIcmpClient1.Ping();
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
label noscan;  var ipos,stip1,stip2,stip3,stip4,eip1,eip2,eip3,eip4,i1,i2,i3,i4,j,k:integer;
 stip,eip:string;
begin
Memo1.Lines.Clear;
stip := startip.Text;
ipos := pos(".",stip);
stip1 := strtoint(copy(stip,1,ipos-1));
delete(stip,1,ipos);
ipos := pos(".",stip);
stip2:= strtoint(copy(stip,1,ipos-1));
delete(stip,1,ipos);
ipos:=pos(".",stip);
stip3:= strtoint(copy(stip,1,ipos-1));
delete(stip,1,ipos);
ipos:=pos(".",stip);
stip4:= strtoint(copy(stip,1,ipos+3));
eip:=endip.Text;
ipos:=pos(".",eip);
eip1 := strtoint(copy(eip,1,ipos-1));
delete(eip,1,ipos);
ipos:=pos(".",eip);
eip2:= strtoint(copy(eip,1,ipos-1));
delete(eip,1,ipos);
ipos:=pos(".",eip);
eip3:= strtoint(copy(eip,1,ipos-1));
delete(eip,1,ipos);
ipos:=pos(".",eip);
eip4:= strtoint(copy(eip,1,ipos+3));
x[1] := stip1;x[2] := stip2;x[3] := stip3;x[4] := stip4;
y[1] := eip1;y[2] := eip2;y[3] := eip3;y[4] := eip4;
if ((x[1] = y[1]) and (x[2] = y[2]) and (x[3] = y[3]))
   then
     begin
       scannet(x[4], y[4]);
       goto noscan;
     end
   else scannet(x[4], 255);
 inc(x[3]);
 t[2] := y[2];
 t[3] := y[3];
 t[4] := y[4];
 y[2] := 255;
 y[3] := 255;
 y[4] := 255;
 while (x[1] <= y[1]) do
   begin
    if (x[1] = y[1]) then y[2] := t[2];
     while (x[2] <= y[2]) do
       begin
         if ((x[1] = y[1]) and (x[2] = t[2])) then y[3] := t[3] - 1;
         while (x[3] <= y[3]) do
           begin
             scannet(0, 255);
             if (x[3] = y[3]) then break else inc(x[3]);
           end;
         x[3] := 0;
         if (x[2] = y[2]) then break else inc(x[2]);
       end;
     x[2] := 0;
     if (x[1] = y[1]) then break else inc(x[1]);
   end;
 x[2] := t[2];
 x[3] := t[3];
 scannet(0,t[4]);
noscan:
end;
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
 const AReplyStatus: TReplyStatus);
begin
if(IdIcmpClient1.ReplyData <> "") then
begin
Form1.Memo1.Lines.Add(InttoStr(x[1]) + "." + InttoStr(x[2]) + "." + InttoStr(x[3]) + "." + InttoStr(i));asm nop end;
IdIcmpClient1.CleanupInstance;
end;
end;
end.

Разберайся. Я сам тоже с этой бадягой долго парился.


 
Verg ©   (2004-02-27 12:06) [5]


> ALeX.B. ©   (27.02.04 11:57) [4]


Шо это было?


> asm nop end;


Это что?


 
Polevi ©   (2004-02-27 12:29) [6]

>Verg ©   (27.02.04 12:06) [5]
зато через массив :)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
3-1080327973
Gambit
2004-03-26 22:06
2004.04.25
Синхронизацыя 2 таблиц paradox


3-1080651328
geg
2004-03-30 16:55
2004.04.25
Генерация номера заказа


8-1068846700
BlaMyr
2003-11-15 00:51
2004.04.25
Миниатюры графических файлов.


4-1076576180
Alexis
2004-02-12 11:56
2004.04.25
Обнаружение ВСЕХ процессов в системе...


3-1080287554
stelius
2004-03-26 10:52
2004.04.25
Как определить принадлежность поля к таблице?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский