ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

INDY в поток.
  #1  
Старый 22.08.2009, 19:26
Аватар для Akapel
Akapel
Новичок
Регистрация: 15.12.2008
Сообщений: 24
Провел на форуме:
184747

Репутация: 1
По умолчанию INDY в поток.

Привет всем. Нужна помощь в реализации POST запроса к сайту многопоточно.
Код:
unit Unit13;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

tnew = class(tthread)
private
s:string;
{ private declarations }
procedure addstr;
protected
procedure execute; override;
end;
var
  Form1: TForm1;
  http1:tidhttp;
  a:longint;
  IdHTTP1: TIdHTTP;
  new1, new2: tnew;
  implementation

{$R *.dfm}



procedure tnew.addstr;
var params,responseres:tstringlist;
label method;
begin
params:=TStringList.Create;
responseres:=TStringList.Create();
idhttp1:=TidHTTP.Create(nil);
try

//здесь параметры

responseres.text:=IDHTTP1.Post('Сайт',params);

//Тут идет условие и отсылка в мемо

finally
params.free;
responseres.free;
responseres:=nil;
params:=nil;
end;

end;

procedure tnew.execute;
begin
synchronize(addstr);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
new1 := tnew.create(true);
new1.freeonterminate := true;
new1.s := '1 thread';
new1.priority := tplowest;
new2 := tnew.create(true);
new2.freeonterminate := true;
new2.s := '2 thread';
new2.priority := tptimecritical;
new1.resume;
new2.resume;
end;

end.
Я попытался реализовать это в два потока, но отправка POST все равно идет по очереди, т.е. пока первый запрос не выполнится, второй не пойдет.
Подскажите, как лучше реализовать?
 
Ответить с цитированием

  #2  
Старый 22.08.2009, 22:22
Аватар для flacs
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме:
432613

Репутация: 80
По умолчанию

Код:
type
  PSTRUCT = ^STRUCT;
  STRUCT = record
    i,j: cardinal;
  end;


var
   tid: cardinal;
  SLemail, SLpass: TstringList;

procedure Multi(param: Pointer); stdcall;
var
  first, second: cardinal;
  full: string;
begin
  first:=integer( PSTRUCT(param).i);
  second:=integer( PSTRUCT(param).j);
  MessageBox(0,Pchar(SLEmail.Strings[first]),Pchar(SLpass[second]),0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    i,j: integer;
    _struct: PSTRUCT;
begin
  SLEmail:=TStringList.Create; SLEMail.Clear;
  SLpass:=TStringList.Create; SLPass.Clear;
  SLEmail.Add('1@mail.ru');
  SLEmail.Add('2@mail.ru');
  SLpass.Add('password1'); SLPass.Add('password2');
  for i:=0 to SLEmail.Count -1  do
    for j:=0 to SLPass.Count -1 do begin
      Application.ProcessMessages;
      New(_struct);
      _struct^.i:=i; _struct^.j:=j;
     createthread(nil,0,@Multi,_struct,0,tid);
  end;
end;
Создаются потоки, и в каждом потоке создается мессаг содержащий email; password, которые занесены в список. Процедура Multi обработчик потока, модифицируй его по своему усмотрению. С indy не пробал, т.ч., попробуй так, если даже щас будут задержки, то придется писать POST запрос на сокетах...

Последний раз редактировалось flacs; 22.08.2009 в 22:34..
 
Ответить с цитированием

  #3  
Старый 22.08.2009, 22:54
Аватар для Akapel
Akapel
Новичок
Регистрация: 15.12.2008
Сообщений: 24
Провел на форуме:
184747

Репутация: 1
По умолчанию

Ок, щас попробую) тему пока не закрывайте.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка Indy 10.5.6 НTL С/С++, C#, Delphi, .NET, Asm 10 20.12.2009 09:15
Indy 10 - проблема mailbrush С/С++, C#, Delphi, .NET, Asm 9 25.07.2009 16:56
Indy 10 помогите Student :) Болталка 1 16.05.2009 20:38
TWebBrowser и поток? ZirroCool С/С++, C#, Delphi, .NET, Asm 3 26.01.2009 20:29
Задание по мат методом (максимальный поток) kenny-cs О Работе 0 12.12.2008 16:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ