Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   TIdTrivialFTP Client macht kein RETRY (https://www.delphipraxis.net/187525-tidtrivialftp-client-macht-kein-retry.html)

Poolspieler 6. Dez 2015 17:06

TIdTrivialFTP Client macht kein RETRY
 
Hallo Zusammen,
ich möchte mit meinem Programm eine Datei (5-10MB) zu einem TFTP-Server senden.
Leider bricht die Kommunikation öfter mit einer Exception der Klasse EIdTFTPException mit der Meldung 'Zeitüberschreitung' ab.

Mit dem TFTP-Client von Win7 klappt die Übertragung jedes mal.
Ich habe mir den Datenverkehr mit Wireshark angeschaut:
Der Windows-TFTP-Client sendet einige Pakete doppelt, wenn er keine Antwort vom Server erhält.

Der Indy-Client mach dies NICHT. Wenn keine Antwort vom Server kommt, dann wird nach der Timeoutzeit die Exception geworfen.

Hier kann man lesen, dass dies wohl in den Indy-Komponenten nicht unterstützt wird:

http://embarcadero.newsgroups.archiv...205107172.html
--> Der Post ist von 2012 :shock:

Hat jemand eine Idee, wie ich einen robusten Client in meinem Programm realisieren könnte?
Gibt es gute Alternativen zu Indy? Sowohl freie, als auch kostenpflichtige Lösungen sind willkommen. :wink:



Viele Grüße,

Poolspieler

haentschman 6. Dez 2015 17:14

AW: TIdTrivialFTP Client macht kein RETRY
 
Moin...8-)
Zitat:

Gibt es gute Alternativen zu Indy?
...Nö. :P Ich verwende regelmäßig TidFTP mit Dateien > 10MB ohne Probleme. :gruebel:
Das könnten entscheidende Zeilen sein:
Delphi-Quellcode:
FFTP:= TIdFTP.Create(nil);
FFTP.TransferType:= ftBinary;
FFTP.Passive:= True;

Poolspieler 6. Dez 2015 17:29

AW: TIdTrivialFTP Client macht kein RETRY
 
Hallo haentschman,
vielen Dank für Deine Antwort.

Ich verwende das TFTP-Protokoll, nicht das FTP-Protokoll (kann der Server nicht).
Oder kann man mit dem FTP-Client auch auf einen TFTP-Server zugreifen?

Viele Grüße,

Poolspieler

haentschman 6. Dez 2015 17:47

AW: TIdTrivialFTP Client macht kein RETRY
 
Zitat:

TFTP-Server / TFTP-Protokoll
...sagt mir nix. Ich schmeiß grad mal die Tante G an. Zwischendurch erklärst du uns Unwissenden das mal... :P

Auf die Schnelle ein paar Info´s ohne sie gelesen zu haben: http://stackoverflow.com/questions/2...sfer-in-delphi

Luckie 6. Dez 2015 18:00

AW: TIdTrivialFTP Client macht kein RETRY
 
Warum benutzt du überhaupt ein für dein Vorhaben ungeeignetes Protokoll?
Zitat:

TFTP is not for general file transfer, since it is a very lightweight file transfer protocol. It is usually limited to LANs and used for simple tasks such as uploading/downloading routing tables from routers.

Poolspieler 6. Dez 2015 20:14

AW: TIdTrivialFTP Client macht kein RETRY
 
Hallo Zusammen,
also, der Server ist ein Embedded System mit geringen Resourcen. Deshalb gibt es erstmal keinen FTP, sondern den kleinen Bruder TFTP. Für meine Anwendung wäre FTP absolut oversized.
Sollte ich wirklich keinen guten Client finden, dann werde ich mein eigenes Protokoll (mit eigenem Handshake) stricken. Das wollte ich aus Zeitgründen möglichst umgehen.

Die wichtigsten Unterschiede FTP vs. TFTP:
FTP ist session-oriented (zuerst Verbindungsaufbau, dann Datenübertragung) - TFTP nicht
TFTP hat viel weniger Funktionen (nur PUT und GET) - man keinen Verzeichnisinhalt ausgeben oder in verschiedene Verzeichnisse wechseln, oder diese anlegen/löschen
TFTP hat kein User-Management - also keine Authentifizierung mit User/Passwort
FTP läuft auf Port 20 (Daten) und Port 21 (Connection) - TFTP läuft auf Port 69

Tante Google habe ich natürlich schon vor meinem ersten Post bemüht. Die alte Dame hat leider (noch) keine guten Ergebnisse für mich finden können. Mal sehen, vielleicht findet Sie ja noch was :xmas:

Viele Grüße,

Poolspieler

Luckie 6. Dez 2015 20:50

AW: TIdTrivialFTP Client macht kein RETRY
 
Und TFTP für deinen Zweck nicht geeignet.

Poolspieler 6. Dez 2015 20:56

AW: TIdTrivialFTP Client macht kein RETRY
 
Hallo Luckie,
ich bin da anderer Meinung.
Das Protokoll ist dafür geeignet, gelegentlich Dateien zu einem Embeddedsystem zu senden. Nur der Indy-Client ist nicht dafür geeignet. Mit dem Windows(7) Client würde es ja bestens funktionieren.
Wir müssen hier aber auch nicht diskutieren, ob das Protokoll geeignet ist, sondern ob es einen Client gibt, der die RETRY-Funktion unterstützt.

BTW: Ich bin gerade dran, mein eigenes Protokoll dafür zu schreiben. Das ist dann noch resourcenschonender als TFTP. Macht aber - aus meiner Sicht unnötige - zusätzliche Arbeit...

himitsu 6. Dez 2015 23:31

AW: TIdTrivialFTP Client macht kein RETRY
 
Man könnte natürlich auch versuchen das eigentliche Problem zu beheben.

Die schlechte Netzwerkverbindung.


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