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