Показать сообщение отдельно

  #7  
Старый 14.12.2008, 14:23
MongBa†
Banned
Регистрация: 16.05.2008
Сообщений: 13
Провел на форуме:
55402

Репутация: 40
Отправить сообщение для MongBa† с помощью ICQ
По умолчанию

Элемантарная реализация многопоточности..
Код:
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-а , который при совместных обращениях может вытащить либо пустой пароль либо вовсе заглючить и выкинуть..
СМТП брут уже давно реализован в Гидре , так что не знаю есть ли смысл изобретать велосипед, разве что в целях собственного развития