Suche robuste FTP Bibliothek (SFML und QtFTP funktioneren nicht)



  • Hallo zusammen,

    ich bin auf der Suche nach einer robusten FTP Bibliothek.

    Ich möchte kleine Bilder (.jpg) von einem FTP Server herunterladen.
    Als Programmierumgebung nutze ich Qt x64 mit MinGW.
    Ich muss viele Bilder herunterladen und QtFTP hängt oftmals.

    Bei SFML ist es noch schlimmer. Hier können problemlos große Dateien binär heruntergeladen werden, aber kleine Bilder unter 100 kB bekomme ich nicht heruntergeladen. Ein Bild wird vollständig vom Server geladen, aber im Gegensatz zu einer größeren Binärdatei kommt vom Server nie das Kommando 226, dass der Transfer beendet ist. Somit hängt SFML nach dem ersten Bild fest.
    Das passiert komischerweise nur bei kleinen Binärdateien. Ascii-Files lassen sich immer problemlos herunterladen.

    Bei QtFTP zeigt sich derselbe Fehler, nur dass es nur sporadisch auftritt.

    Mit der Software Filezilla geht alles immer 1A.
    Nur Filezilla in mein Projekt zu integrieren ist viel zu aufwendig.

    Der FTP-Dienstleister hat von mir schon mitgeschnittenen Traffic bekommen und sagt einfach, dass es eine Inkompatibilität ist und dass ich Filezilla nutzen soll. Damit ist mir aber leider nicht geholfen.

    Bei QtFTP blockiert die gesamte Instanz dauerhaft, so dass ich eine neue erzeugen muss. Bei SFML müsste ich nach jedem Bild ohne zu wissen, ob es wirklich heruntergeladen wurde, die Connection terminieren und eine neue für das nächste Bild herstellen.

    Kennt jemand eine robuste Bibliothek, die robust ist und sich gut in meine Entwicklungsumgebung integrieren lässt?

    Vielen Dank 🙂



  • ist es möglich das der server mit 250 antwortet wenn die datei übertragen wurde und nicht mit 226?

    http://www.ietf.org/rfc/rfc959.txt

    To prevent a race condition here, the server
    sends a reply (226) after closing the data connection (or if the
    connection is left open, a "file transfer completed" reply (250)
    and the user-PI should wait for one of these replies before
    issuing a new transfer command).

    libcurl sieht man oft verwendet wenns um Datei Transfer geht
    http://curl.haxx.se/libcurl/
    die HP libcurl listet sogar die meisten gängigen alternativen zu sich selbst
    http://curl.haxx.se/libcurl/competitors.html

    ich glaub in Qt ist QNetworkAccessManager die Klasse die man heute nutzt



  • Ich werf einfach mal POCO C++ libraries in den Raum, kann nicht sagen ob die Lizenz/Platform etc. passend für Dich ist.


Anmelden zum Antworten