Danke erstmal an alle für eure Antworten.
Ich würde es wahrscheinlich quick-and-dirty so lösen:
Code:
for j:= 0 to 1 do
try
if IdFTP.Connected then
begin
IdFTP.List();
for I := 0 to IdFTP.DirectoryListing.Count - 1 do
begin
[...]
end
[...]
break;
end;
except
on e: EIdFTPServiceNotAvailable do
if i=0 then
begin
IdFTP.Disconnect;
IdFTP.Connect;
end;
end;
...ungetestet, als Anregung...
Habe das jetzt mal eingebaut und das scheint zu funktionieren. Ich finde das momentan besser als alle paar Sekunden neu zu verbinden. Aber ich kenne mich mit
FTP-Servern nicht aus, deshlab weiß ich nicht, ob es den mehr stört, wenn sich jemand alle paar Sekunden neu verbindet oder er einfach solange wie möglich die Verbindung aufrecht erhält.
Und bevor jemand suchen geht, der das hier liest, die
Exception-Klasse "EIdFTPServiceNotAvailable" ist in der
Unit "IdReplyFTP" zu finden.