FTP Verbindung herstellen

  • Hallo Schnuffel,

    das mit dem TimeOut funktioniert leider nicht.

    Das Programm wird nach ca.30 Sek. beendet. Genau wie vorher.(Egal was ich als TimeOut einstelle)

    Antwort:

    Connect FAILED
    >Exit code: 0 Time: 31.92

    Lg

  • Teste es mal mit diesem Script, ob es damit geht...

    In Zeile 41 - 52 kannst du die Daten für deinen Server eintragen.

    Die Timer für CONNECT_TIMEOUT und RECEIVE_TIMEOUT sind deaktiviert.

    Ein FTPStatusCallbackHandler, für erweiterte Fehlermeldungen, wird auch initiiert.


    Download ist in mehreren Varianten möglich... schaue einfach mal die Kommentare durch.

    Bereinige aber bitte den Inhalt des Debug-Windows, bevor du ihn hier hochlädst.

    Connect FAILED
    >Exit code: 0 Time: 31.92

    Und das ist ja mal nicht die ganze Wahrheit... denn abgesehen davon, dass Schnuffel zwar eine Fehlerprüfung in der Funktion _InternetSetOptions() macht, diese nach Verlassen jedoch nicht weiter beachtet, bekommst du aber zumindest eine Ausgabe in der Console, die du aber nicht erwähnt hast!

    a)

    AutoIt
    ConsoleWrite("+++: Openfailed" & @CRLF)

    b)

    AutoIt
    ConsoleWrite("Connect FAILED" & @CRLF)

    c)

    AutoIt
    ConsoleWrite("Can connect OK" & @CRLF)


    Edit: Die in dem Script verwendete FTP-Adresse (ftp.mozilla.org) ist seit dem 15.05.2015 nicht mehr verfügbar!


    After 8/5/15, ftp protocol support for ftp.mozilla.org will be completely disabled and downloads can only be accessed through http/https.


    Statt ftp.mozilla.org dann einfach einen anderen öffentlichen Server verwenden... z. B.:
    Server: ftp.uni-koeln.de
    RemoteFile: /mirrors/debian/tools/win32-loader/stable/win32-loader.txt

  • Na fein, da freut sich doch der Mensch... 8)

    Dass es nun funktioniert, liegt einzig an der Funktion __InternetSetOptionsW(), mit der die Timer für Connect und Recive durch den infinitiven (unbegrenzten) Wert (0xFFFFFFFF) deaktiviert werden.

    Wenn also vorab kein Fehler auftritt (z. B. Hostname konnte nicht aufgelöst werden), welcher bereits von FTPEx.au3 abgefangen wird, wartet das Script auf Antwort vom Server, bis das der Arzt kommt.

    Auf ein Minimum reduziert bräuchtest du lediglich...

    _Open_FTP_Session()
    __InternetSetOptionsW() ; der Timeout-Wert sollten für den alltäglichen Gebrauch aber 'etwas' moderater gewählt werden... z. B. 0x0000EA60 = 60 Sekunden :D
    _Connect_FTP_Server()
    _ProgressDownload()
    _Exit()


    Die restlichen Funktionen sind informativer bzw. kosmetischer Natur und teils nur vorhanden, um das Handling mit DebugOut() zu vereinfachen.

    Um zu verstehen, warum es jetzt mit deinem Server funktioniert, bräuchtest du dich ergo nur mit __InternetSetOptionsW() befassen.