![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сканер портов [D7, WinXP]
Ghost_ © (2003-03-03 14:28:00)Какой наиболее оптимальный вариант решения этой задачи?
Digitman (2003-03-04 12:52:00) [1]тогда уж вот так :
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;
Карелин Артем (2003-03-04 12:45:00) [2]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:39:00) [3]
> Карелин Артем
> у меня он не подразумеваемый, а блокируемый
В таком случае обработка OnError() совершенно никчему - это событие просто не возникнет.
И вот это (см. жирным)
try
..
ClientSocket1.Open;
..
finally
ClientSocket1.Close;
end;
совершенно никчему.
более того, нужно "гасить" исключение в блоке except..end, ибо цикл по i будет прерван в результате первого же искл-я, говорящего о факте неактивности очер.сканируемого порта
Ghost_ (2003-03-04 12:34:00) [4]Может у меня клиент сокет кривой?
Карелин Артем (2003-03-04 12:23:00) [5]>>при подразумеваемом ClientType = ctNonBlocking
А у меня он не подразумеваемый, а блокируемый.
Digitman (2003-03-04 12:00:00) [6]
> Карелин Артем
> У меня все работает. Даже правильно
при подразумеваемом 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;
Ghost_ (2003-03-04 11:43:00) [7]И хто бы это мог быть! -подумал Винипух...
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;
вот он есть кривой цикл..
Programist (2003-03-04 10:35:00) [8]Потому-что кто-то цикл криво крутит.
Ghost_ (2003-03-04 08:32:00) [9]Может кто знает почему она выдает сообщение о коннекте через два?
Ghost_ (2003-03-03 17:06:00) [10]Вообще не работает..
Карелин Артем (2003-03-03 16:33:00) [11]Ничем помочь не могу. У меня все работает. Даже правильно. Хотя неплохо бы было сменить тип клиента на ctBlocking - может будет работать без дремоты.
Ghost_ (2003-03-03 16:23:00) [12]Если вставить строчку sleep(10);
то работает но выдает полный бред..у меня открытф порты на
1, 3,4,11,15
а результат
3,6,13,17
что бы это значило?
Карелин Артем (2003-03-03 16:21:00) [13]А что говорит? Звезды из адреса убрал? С бубном побегал? Белую дискету в полнолуние под коврик положил?
Ghost_ (2003-03-03 16:04:00) [14]А у меня почемуто неть
Карелин Артем (2003-03-03 16:01:00) [15]ClientSocket1.Address:="192.168.14."+IntToStr(i); - а у меня работает...
Ghost_ (2003-03-03 15:31:00) [16]Это почему-то работает если на одном компьютере разные порты сканировать, а если один и тотже но на разных почему-то нет..
Карелин Артем (2003-03-03 15:14:00) [17]Ну типа того:
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;