Einzelnen Beitrag anzeigen

Stacker

Registriert seit: 12. Okt 2006
5 Beiträge
 
#1

Zu mehreren FTP gleichzeitig connecten mit Threads

  Alt 23. Feb 2007, 17:01
Hallo folgendes Problem.

ich bin dabei mir eine FTP Suchmaschine zu basteln die zu mehreren FTP's gleichzeitig connected und diese durchsucht. Die Anzahl der gleichzeitigen Connection ist begrenzt (run_max).

Delphi-Quellcode:
procedure Tform1.runthread;
var Th: TMyThread;
  begin
  Th := TMyThread.Create(true);
  Th.FreeOnTerminate := True;
  Th.PB := idftp1;
  TH.the_host:= serverlist.Items[sev].Caption; //HOST
  Th.the_user := serverlist.Items[sev].SubItems[0]; //USER
  TH.the_pw:= serverlist.Items[sev].SubItems[1]; //Password
  Th.Resume;
  end;

procedure TMyThread.Execute;
begin
inc(run);
  while not Terminated do
  begin
    Synchronize(VCLSync);
    Sleep(3);
  end;
dec(run);
if sev<form1.serverlist.items.count then
begin
form1.runthread;
inc(sev);
end;
end;

procedure TMyThread.VCLSync;
begin
 PB.Host:= the_host;
 PB.Username:= the_user;
 PB.Password:= the_pw;
 PB.Connect(true);
 if PB.Connected then
 begin
  form1.readfiles('/');
  PB.Disconnect;
  end;
 Terminate;
end;
Also "runthread" ausführen mit einer for schleife und jeweils anderem Host und Login geht nicht.

Delphi-Quellcode:
procedure TForm1.Start(Sender: TObject);
var
  I: Integer;
begin
sev:=0;
run:=0;
if (run_max>=serverlist.items.count) then
for I := 0 to serverlist.items.count - 1 do
begin
runthread;
inc(sev);
end
else
for I := 0 to run_max - 1 do
begin
runthread;
inc(sev);
end;
end;
Wie kann ich das machen, dass ich mehrere (run_max) Threads offen habe die alle einen anderen Server durchsuchen? Muss ich für jede connection eine neue IDFTP Komponente nehmen?

Gruß Stacker
  Mit Zitat antworten Zitat