Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Zu mehreren FTP gleichzeitig connecten mit Threads (https://www.delphipraxis.net/87126-zu-mehreren-ftp-gleichzeitig-connecten-mit-threads.html)

Stacker 23. Feb 2007 17:01


Zu mehreren FTP gleichzeitig connecten mit Threads
 
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

SirThornberry 23. Feb 2007 17:33

Re: Zu mehreren FTP gleichzeitig connecten mit Threads
 
ja musst du denn während das eine idftp beschäftigt ist kannst du es ja nicht aus dem anderen Thread gleichzeitig nutzen (ist ja schließlich beschäftigt). Zudem solltest du das TIdFtp im Thread erzeugen und nicht in einem anderen Thread (Hauptthread) wo es am ende gar nicht läuft.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz