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

Вниз

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

 
Ghost_   (2003-03-03 14:28) [0]

Какой наиболее оптимальный вариант решения этой задачи?


 
Карелин Артем   (2003-03-03 15:14) [1]

Ну типа того:

procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
ss:TFileStream;
begin
for i:=SpinEdit1.Value to SpinEdit2.Value do
begin
try
Caption:=IntToStr(i);
Powersock1.Host:="192.168.***.***";
ClientSocket1.Port:=i;
Application.ProcessMessages;
ClientSocket1.Open;
finally
ClientSocket1.Close;
end;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(IntToStr(ClientSocket1.Port));
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
end;


 
Ghost_   (2003-03-03 15:31) [2]

Это почему-то работает если на одном компьютере разные порты сканировать, а если один и тотже но на разных почему-то нет..


 
Карелин Артем   (2003-03-03 16:01) [3]

ClientSocket1.Address:="192.168.14."+IntToStr(i); - а у меня работает...


 
Ghost_   (2003-03-03 16:04) [4]

А у меня почемуто неть


 
Карелин Артем   (2003-03-03 16:21) [5]

А что говорит? Звезды из адреса убрал? С бубном побегал? Белую дискету в полнолуние под коврик положил?


 
Ghost_   (2003-03-03 16:23) [6]

Если вставить строчку sleep(10);
то работает но выдает полный бред..у меня открытф порты на
1, 3,4,11,15
а результат
3,6,13,17
что бы это значило?


 
Карелин Артем   (2003-03-03 16:33) [7]

Ничем помочь не могу. У меня все работает. Даже правильно. Хотя неплохо бы было сменить тип клиента на ctBlocking - может будет работать без дремоты.


 
Ghost_   (2003-03-03 17:06) [8]

Вообще не работает..


 
Ghost_   (2003-03-04 08:32) [9]

Может кто знает почему она выдает сообщение о коннекте через два?


 
Programist   (2003-03-04 10:35) [10]

Потому-что кто-то цикл криво крутит.


 
Ghost_   (2003-03-04 11:43) [11]

И хто бы это мог быть! -подумал Винипух...
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
begin
for i:=1 to 30 do
begin
try
Powersock1.Active:=false;
//Powersock1.ClientType:=ctBlocking;
Powersock1.Port:=4899;
Powersock1.Host:="10.10.1."+IntToStr(i);
Application.ProcessMessages;
Powersock1.Open;
Caption:=IntToStr(i);
finally
Powersock1.Close;
sleep(50);
end;
end;
end;

вот он есть кривой цикл..


 
Digitman   (2003-03-04 12:00) [12]


> Карелин Артем



> У меня все работает. Даже правильно


при подразумеваемом ClientType = ctNonBlocking
не может это работать ! тем более - правильно !

1.

try
Caption:=IntToStr(i);
Powersock1.Host:="192.168.***.***";
ClientSocket1.Port:=i;
Application.ProcessMessages;
ClientSocket1.Open; // вот запустил механизм коннекта
finally
ClientSocket1.Close; // и тут же, не дождавшись асинхр.нотификации о результатах, остановил механизм !!
end;
end;


2.
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
Socket.Close; //!!!!!!!!!!!!

end;


 
Карелин Артем   (2003-03-04 12:23) [13]

>>при подразумеваемом ClientType = ctNonBlocking
А у меня он не подразумеваемый, а блокируемый.


 
Ghost_   (2003-03-04 12:34) [14]

Может у меня клиент сокет кривой?


 
Digitman   (2003-03-04 12:39) [15]


> Карелин Артем



> у меня он не подразумеваемый, а блокируемый


В таком случае обработка OnError() совершенно никчему - это событие просто не возникнет.

И вот это (см. жирным)

try
..
ClientSocket1.Open;
..
finally
ClientSocket1.Close;
end;

совершенно никчему.
более того, нужно "гасить" исключение в блоке except..end, ибо цикл по i будет прерван в результате первого же искл-я, говорящего о факте неактивности очер.сканируемого порта


 
Карелин Артем   (2003-03-04 12:45) [16]

procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
for i:=SpinEdit1.Value to SpinEdit2.Value do
begin
try
Caption:=IntToStr(i);
ClientSocket1.Port:=i;
Application.ProcessMessages;
ClientSocket1.Open;
ClientSocket1.Close;
except
ClientSocket1.Close;
end;
end;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(IntToStr(ClientSocket1.Port));
end;



 
Digitman   (2003-03-04 12:52) [17]

тогда уж вот так :


procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
for i:=SpinEdit1.Value to SpinEdit2.Value do
begin
try
Caption:=IntToStr(i);
ClientSocket1.Port:=i;
Application.ProcessMessages;
ClientSocket1.Open;
Memo1.Lines.Add("Port " + IntToStr(ClientSocket1.Port) + "is active");

ClientSocket1.Close;
except
Memo1.Lines.Add("Port " + IntToStr(ClientSocket1.Port) + "is not active");
end;
end;
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.008 c
1-77019
Василий Петрович
2003-04-13 23:51
2003.04.24
вопрос про число


1-76922
Oleg Koulaboukhov
2003-04-15 10:12
2003.04.24
Перетаскивание объекта


3-76777
Дельфин
2003-04-04 07:38
2003.04.24
индексация и фильтр- всеобщая глюка ,от корой у меня крыша едет.


4-77220
OxOTHuK
2003-02-24 22:10
2003.04.24
Запуск программы


8-77041
Bananos
2003-01-19 23:56
2003.04.24
Вопрос по Bitmap





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский