Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy: "Try later, data connection in use" (https://www.delphipraxis.net/69583-indy-try-later-data-connection-use.html)

Nogge 17. Mai 2006 13:00


Indy: "Try later, data connection in use"
 
Hallo Community,
Ich erhalte ständig die oben genannte Fehlermeldung von einem FTP-Server, der nur eine best Anzahl an Verbindungen pro Benutzer zulässt. D.h. wenn ein Datentransfer stattfindet, kann ich nicht gleichzeitig auf dem FTP-Server herumstöbern. Die Fehlermeldung kommt immer erst dann, wenn ich den List-Befehl aufgerufen habe. Ich möchte gerne sofort beim Verbinden mit dem Server wissen, wie viele Verbindugen zugelassen sind bzw. mithilfe der Indy-Komponenten eine Eigenschaft auslesen, in der die Information enthalten ist.
Weiß jmd, wo bzw. wie ich meine Vorstellungen umsetzen kann?

mfg
Nogge

Nogge 30. Mai 2006 20:01

Re: Indy: "Try later, data connection in use"
 
Ich habe es jetzt doch wieder selbst herausgefunden:
Delphi-Quellcode:
      IdFTP1.LastCmdResult.NumericCode // 425
IdFTP1.LastCmdResult.Text[0] // "try later..."
NumericCode gibt die ID für die Antwort auf den letzten Befehl wieder.
Mithilfe von Text[0] kann man dann die Nachricht, die auch bei der Fehlermeldung erscheint, als String anzeigen lassen.
Der Fehler tritt beim List-Befehl der IndyFTP-Komponente auf, d.h. dieser muss innerhalb eines try-except-Blocks stehen.

Nogge 1. Jul 2006 09:18

Re: Indy: "Try later, data connection in use"
 
Zitat:

Zitat von Nogge
Ich möchte gerne sofort beim Verbinden mit dem Server wissen, wie viele Verbindugen zugelassen sind bzw. mithilfe der Indy-Komponenten eine Eigenschaft auslesen, in der die Information enthalten ist.

Ich habe jetzt außerdem herausgefunden, dass der Fehler eine andere Ursache als das Verbindungslimit hat: Beim FTP-Protokoll gibt es nur 2 Übertragungskanäle. Der eine ist für das Übertragen der FTP-Befehle (z.B. 'CDUP', 'USER' usw.) und der andere für das Trasferieren von reinen Daten zuständig. Dieser Datenkanal kann immer nur eine Aktion zur selben Zeit ausführen, d.h. entweder werden nach dem LIST-Befehl die Dateinamen usw. von einem Verzeichnis auf dem FTP-Server übertragen oder es wird eine Datei in Form eines Streams gesendet.
Bei Indy10 gibt es die Events OnDataChannelCreate und OnDataChannelDestroy, in diese ich eine Boolean-Variable (mit Namen: DataChannelInUse) geschrieben habe, die je nach Event auf true bzw. false gesetzt wird. So kann nun frühzeitig getestet werden, ob das Listing ohne (unterdrückte) Fehlermeldung ausgeführt werden kann.
Ich persönlich wäre sehr froh, wenn mir jemand sagen kann, ob und, wenn, wie es möglich ist, (ohne eine weitere idFTP-Komponente) mehrere Datenkanäle parallel zu erstellen und zu verarbeiten. Ich fände es nämlich praktisch, wenn ich neben eines Downloads gleichzeitig mit dem List-Befehl auf den FTP-Server zugreifen könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 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