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

Вниз

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

 
Rezya   (2004-03-09 20:42) [0]

Люди добрые подскажите PLZZZZ....
Написал сканер портов на основе winsock. Он работает но крайне медленно в отличии тех сканеров что я скачал с I-Net. Чем это обусловлено и как ускорить скорость работы.
Приведу код чтобы было понятно

procedure WWW.Execute;
Var
Data:WsaData;
Sock:TSocket;
Addr:sockaddr_in;
begin
if (WSAStartup($202,Data) <> 0)then  Synchronize(WSAStartup1);

Sock:=Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (Sock=INVALID_SOCKET) then   Synchronize(INVALID_SOCKET1);

Addr.sin_family:=AF_INET;
Addr.sin_addr.S_addr:=inet_Addr(PChar(IpAdress));

For K:=StartPort to EndPort do
begin
Addr.sin_port:=htons(k);
Synchronize(Count);
if Connect(Sock,Addr,Sizeof(Addr))<>0 then
begin
//Synchronize(Error);
end
else
begin
Synchronize(Good);
end;
end;
end;



Делал Отдельным процессом дабы не загружать прогу.
Если кто чем поможет заранее Благодарен.


 
Verg ©   (2004-03-09 20:58) [1]

Дело в том, что ты не используешь не только возможностей многопоточности, но и мощности самого WinSock. Ты применяешь последовательную схему, т.е. пока попытка соединения с одним портом не закончится, к следующему ты не приступаешь.
Хотя можно было бы использовать неблокирующие сокеты с мультиплексированием, например.

Вот почитай пока.

http://delphimaster.net/view/6-1078117651/



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

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

Наверх




Память: 0.46 MB
Время: 0.028 c
14-1081475220
niko4543
2004-04-09 05:47
2004.05.02
Компонент. Поиогите!!!!! пожайлуста Срочно!!!!!!!!!!!!!!!!!!!!!!!


6-1078339833
ser_ega
2004-03-03 21:50
2004.05.02
Как узнать подключен ли я к инету?


1-1082108875
msgipss
2004-04-16 13:47
2004.05.02
помогите ламеру добавить в свой класс событие


4-1078422810
Владимир Б
2004-03-04 20:53
2004.05.02
Токен доступа в Win2000


11-1065797226
Mushu
2003-10-10 18:47
2004.05.02
Как работать с файлами в KOL ....