Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.16;
Скачать: CL | DM;

Вниз

WinSock   Найти похожие ветки 

 
Demetrius2003 ©   (2003-08-21 13:51) [0]

Я захотел научиться работать с WinSock, и для этого я решил написать элементарный сканер портов без всяких приколов, только почему-то он находит только первый открытый порт. Обясните , почему???

procedure TForm1.Button4Click(Sender: TObject);
var
l:word;
begin
Stop:=False;
Button4.Enabled:=False;
WSAStartUp(257, wsadata);
MyIP:=LabeledEdit3.Text;
sock:=socket(AF_INET,SOCK_STREAM,Protoc);
sin.sin_family := AF_INET;
For l:= strtoint(labeledEdit4.Text) to strtoint(labeledEdit5.Text) do
begin
WSAStartUp(257, wsadata);
label1.Caption:=inttostr(l);
htons(l);
sin.sin_port := htons(l);
iaddr:=inet_addr(PChar(MyIP));
sin.sin_addr.S_addr:=iaddr;
// Соединение
If connect(sock,sin,sizeof(sin))<>SOCKET_ERROR then
begin
listbox1.Items.Add("port "+inttostr(l)+" opened");

end;

Application.ProcessMessages;
If stop then begin Button4.Enabled:=True;exit; end;
end;
Button4.Enabled:=True;
end;


 
Digitman ©   (2003-08-21 15:40) [1]

если коннект к порту был успешен, следует разорвать его вызовом closesocket(), а, значит, для след.сканируемого порта придется вновь вызывать socket(). Только так... не иначе ...

учти это и переделай цикл должным образом, внеся в него socket() и closesocket() , которые вызывай при вышеуказанных условиях


 
Demetrius2003 ©   (2003-08-21 16:02) [2]

>Digitman
Спасибо, я уже и сам понял


 
Demetrius2003 ©   (2003-08-21 16:10) [3]

Мой сканер портов получился страшно медленным(1 порт в секунду) можно ли как-то убыстрить процесс (например создать несколько потоков)


 
Digitman ©   (2003-08-21 16:21) [4]


> Demetrius2003


можно


 
Rouse_ ©   (2003-08-22 01:02) [5]

If connect(sock,sin,sizeof(sin))<>SOCKET_ERROR then

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

Желаю успехов



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

Текущий архив: 2003.10.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
3-51136
Alex_x
2003-09-26 13:05
2003.10.16
Форматирование с помощью SQL


4-51553
Sliski Slimak
2003-08-11 20:44
2003.10.16
ChangeDisplaySettings (?????,0)


14-51522
Gluh
2003-09-27 11:52
2003.10.16
Win XP SP2 вышел?


14-51411
CinCinNut
2003-09-26 13:23
2003.10.16
Видеопроекторы


3-51093
Светлана
2003-09-26 07:06
2003.10.16
Точки останова в триггерах и процедурах