![]() |
IdFTP No-transfer-time exceeded
Hallo,
Eine Forumsuche hat bis jetzt noch nichts gebracht, deshalb ein neues Thema: Quellcode vorab:
Delphi-Quellcode:
Der Code ist Teil einer Funktion, die alle paar Sekunden von einem Timer ausgeführt wird. Funktioniert auch alles wunderbar. Aber nach ziemlich genau 10 Minuten kommt beim Ausführen der Zeile "IdFTP.List();" eine Exception:
if IdFTP.Connected then
begin IdFTP.List(); for I := 0 to IdFTP.DirectoryListing.Count - 1 do begin [...] end [...] end; exception class : EIdFTPServiceNotAvailable exception message : No-transfer-time exceeded. Closing control connection. Das einzige, was ich dazu gefunden hab, ist dass manche FTP-Server nach einer gewissen Zeit die Verbindung killen. Allerdings prüfe ich ja vorher auf Connected ab, also bin ich ja prinzipiell noch verbunden? Folgendes habe ich bereits versucht: 1. IdFTP.noop; 2. Jedes mal eine temporäre Datei uploaden 3. nach jedem Timer-Event disconnecten 1 hat nichts gebracht 2 und 3 haben funktioniert aber sind nur unschöne Workarounds. Leider ist der Administrator unseres FTP-Servers im Urlaub, deshalb habe ich keine Ahnung, ob das am FTP-Server selbst liegt oder ob ich noch was anderes einstellen kann. |
AW: IdFTP No-transfer-time exceeded
Die Verbindung zu FTP kann in aller Regel nicht aufrecht gehalten werden. Daher ist Lösung 3 schon korrekt.
|
AW: IdFTP No-transfer-time exceeded
Zitat:
und auch nicht jeder FTP-Client sendet diese Nachricht. Oder aufrecht halten und reconnecten wenn es knallt. Aber 10 Minuten ist jetzt auch recht lange, womit Punkt 3 natürlich die bessere Lösung ist. |
AW: IdFTP No-transfer-time exceeded
Ich würde es wahrscheinlich quick-and-dirty so lösen:
Code:
...ungetestet, als Anregung...
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; |
AW: IdFTP No-transfer-time exceeded
Danke erstmal an alle für eure Antworten.
Zitat:
Und bevor jemand suchen geht, der das hier liest, die Exception-Klasse "EIdFTPServiceNotAvailable" ist in der Unit "IdReplyFTP" zu finden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz