Indy error 10038 "Socket-Vorgang bei Nicht-Socket" nach 61 Sekunden Inaktivität
Ich möchte einige große Dateien (GB) von einem FTP-Server herunterladen. Der Download der ersten Datei funktioniert immer. Wenn ich dann versuche, die zweite Datei abzurufen, erhalte ich:
"Socket-Fehler Nr. 10038. Socket-Vorgang bei Nicht-Socket."
Der Fehler ist auf "Get". Nach 'Get' werden folgende Meldungen angezeigt (per FTP-Statusereignis):
Starting FTP transfer
Disconnecting.
Disconnected.
Der Code sieht folgendermaßen aus:
{pseudo-code}
for 1 to AllFiles do
begin
if Connect2FTP then
begin
FTP.Get(Name, GzFile, TRUE, FALSE); <--- Socket operation on non-socket" error (I also get EIdConnClosedGracefully 'Connection Closed Gracefully' in IDE, F9 will resume execution without problems, but this is OK)
Unpack(GzFile); <--- this takes more than 60 seconds
end;
end;
if FTP.Connected
then FTP.Disconnect;
-
function Connect2FTP(FTP: TIdFTP; RemoteFolder: string; Log: TRichLog): Boolean;
begin
Result:= FTP.Connected;
if NOT Result then
begin { We are already connected }
FTP.Host := MyFTP;
FTP.Username:= usr;
FTP.Password:= psw;
TRY
FTP.Connect;
EXCEPT
on E: Exception DO
Result:= FTP.Connected;
if Result then FTP.ChangeDir(RemoteFolder);
end;
end;
Voller Code hier:http: //pastebin.com/RScj86R (PAS) oder hierhttps: //ufile.io/26b5 (POSTLEITZAHL
Ich denke, das Problem tritt auf, nachdem 'Unpack' aufgerufen wurde, was einige Minuten dauert.
UPDATE: CONFIRMED: Das Problem tritt nach dem Aufruf von 'Auspacken' auf. Ich habe den Anruf entfernt und alles ist in Ordnung. Wenn Sie das Programm zwischen den Downloads für eine Weile pausieren (Schlaf- oder Haltepunkt) (ich glaube, länger als 60 Sekunden), tritt das gleiche Problem auf.