
14.12.2008, 14:23
|
|
Banned
Регистрация: 16.05.2008
Сообщений: 13
Провел на форуме: 55402
Репутация:
40
|
|
Элемантарная реализация многопоточности..
Код:
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
BtChoose: TButton;
//.........................
procedure BtChooseClick(Sender: TObject);
procedure BtBeginClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Brute = class(TThread)
WSAData:TWSAData;
sock:TSocket;
addr:TSockAddrIn;
procedure Execute; override;
end;
var
Form1: TForm1;
thr: array [1..999] of Brute;
implementation
{$R *.dfm}
procedure Brute.Execute;
begin
// Здесь код одного потока брута
end;
procedure TForm1.BtBeginClick(Sender: TObject);
var i:integer;
begin
for i:=1 to 99 do
begin
thr[i]:=Brute.Create(false); // Стартуем
sleep(500);
end;
end;
В дальнейшем столкнешся с проблемами таймаута для каждой нити, с глюками TStringList-а , который при совместных обращениях может вытащить либо пустой пароль либо вовсе заглючить и выкинуть..
СМТП брут уже давно реализован в Гидре , так что не знаю есть ли смысл изобретать велосипед, разве что в целях собственного развития 
|
|
|