FTP Verbindung herstellen

  • Hallo Leute,


    ich versuche gerade mit AutoIt eine Verbindung zu einem FTP-Server herzustellen.
    Allerdings dauert es ziemlich lange bis eine Willkommensnachricht vom Server gesendet wird.
    Mit FileZilla musste ich eine Zeitüberschreitung von 60 Sekunden einstellen damit es funktioniert.


    Mit AutoIt und der UDF _FTP_Connect bekomme ich eine Fehlermeldung nach ca. 38 Sekunden und das war es dann.


    Kann ich in AutoIt auch eine größere Zeit für den Abbruch einstellen? ?(

  • Ich glaube das ist eine Variable in der Include FTPEx.au3
    eine der folgenden:
    Unbenannt.png


    Ich gehe eigentlich davon aus, dass es die in Zeile 66 bzw Ziele 67 ist. kannst es ja mal ausprobieren und einfach mal zum Test ändern!


    Lg Philipp

  • Hallo Phil-IT


    habe schon probiert die Datei abzuändern.



    53. Global Const $INTERNET_STATUS_CLOSING_CONNECTION = 60;50
    54. Global Const $INTERNET_STATUS_CONNECTION_CLOSED = 61;51
    55. Global Const $INTERNET_STATUS_CONNECTING_TO_SERVER = 20
    56. Global Const $INTERNET_STATUS_CONNECTED_TO_SERVER = 21
    57. Global Const $INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42
    58. Global Const $INTERNET_STATUS_INTERMEDIATE_RESPONSE = 120
    59. Global Const $INTERNET_STATUS_PREFETCH = 43
    60. Global Const $INTERNET_STATUS_REDIRECT = 110
    61. Global Const $INTERNET_STATUS_REQUEST_COMPLETE = 100
    62. Global Const $INTERNET_STATUS_HANDLE_CREATED = 60
    63. Global Const $INTERNET_STATUS_HANDLE_CLOSING = 70
    64. Global Const $INTERNET_STATUS_SENDING_REQUEST = 60;30
    65. Global Const $INTERNET_STATUS_REQUEST_SENT = 60;31
    66. Global Const $INTERNET_STATUS_RECEIVING_RESPONSE = 60;40
    67. Global Const $INTERNET_STATUS_RESPONSE_RECEIVED = 60;41
    68. Global Const $INTERNET_STATUS_STATE_CHANGE = 200
    69. Global Const $INTERNET_STATUS_RESOLVING_NAME = 10
    70. Global Const $INTERNET_STATUS_NAME_RESOLVED = 11


    Hat aber nichts gebracht.


    Lg

  • Kannst du mir einen Tip geben wie ich das anstelle?


    Hier mein umgebautes Pogramm aus der Hilfe:





    Lg

  • Hier noch die Statusmeldung von FileZilla.




    Status: Verbinde mit 192.168.0.111:21...
    Status: Verbindung hergestellt, warte auf Willkommensnachricht... (nach dieser Meldung dauert es so lange)


    Status: Der Server unterst
    Status: Verbunden
    Status: Empfange Verzeichnisinhalt...
    Status: Anzeigen des Verzeichnisinhalts f

  • gib mal in die CMD ein

    Bash
    Ping 192.168.0.111:21


    und versuche mal das ganze mit folgender UDF:
    Befehle sind ziemlich ähnlich nur ganz kurz umändern!

    Dateien

    • FTP.au3

      (15,99 kB, 123 Mal heruntergeladen, zuletzt: )

    Einmal editiert, zuletzt von Phil-IT ()

  • Dann kommt die Meldung: Ping-Anforderung konnte Host "192.168.0.111:21"nicht finden. Überprüfen Sie den Namen, und
    versuchen Sie es erneut.


    Gebe ich nur Ping 192.168.0.111 ein dann funktionierts.

  • Ok ich habe dein Problem mit dem Server mal gegoogled, anscheinend ein wohl bekanntes Thema das die sehr langsam bei sowas sind. Wie gesagt teste mala nochmal mit dem FTP.au3

  • Du könntest probieren die erforderlichen Methoden aus der FTP.au3 rauszukopieren ohne include und dann den Fehlermeldungen hinterherjagen, bis du alle notwendigen Methoden zusammen hast.
    Dann kannst du eventuell irgendwo im Code erkennen mit welcher Routine dieser zeitgesteuerte Verbindungsabbruch erfolgt.

  • Habe die Funktionen rauskopiert und einige MsgBoxen gemacht



    Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0)
    MsgBox (0, "FTP_Connect", "Bin drin") Diese Box kommt



    Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)


    Nach dieser Zeile ist wohl eine Fehlermeldung vorhanden und ich flieg raus


    MsgBox (0,"DLLCall", "DLLCall" ) Diese Box kommt
    If @error OR $ai_InternetConnect[0] = 0 Then
    MsgBox (0, "Fehler", "" &@error &@CRLF &$ai_InternetConnect ) und diese Box kommt leider auch
    SetError(-1)
    Return 0
    EndIf
    Return $ai_InternetConnect[0]
    EndFunc ;==> _FTPConnect()

  • Schau mal, ob dir das hilft...



  • Hallo Bitnugger,


    hier ist das Ergebnis.



    OK - _FTP_Open
    - $hOpen = 0x00CC0004
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Resolving name ...
    Name resolved
    Connecting to server ...
    Connected to server
    UNKNOWN status = 40
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Connecting to server ...
    Connected to server
    UNKNOWN status = 40
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Resolving name ...
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Connecting to server ...
    Connected to server
    UNKNOWN status = 40
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Connecting to server ...
    Connected to server
    UNKNOWN status = 40
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Connecting to server ...
    Connected to server
    UNKNOWN status = 40
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Connecting to server ...
    Connected to server
    UNKNOWN status = 40
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    Closing connection ... | Size = 13369352 Bytes Bytes read = 4
    Connecting to server ...
    Connected to server
    UNKNOWN status = 40
    Handle closing ...
    ~~~~~~~~~~~~~~~~~~~~~
    FAIL - _FTP_Connect
    - @error = 0
    - @extended = 0
    ~~~~~~~~~~~~~~~~~~~~~
    >>>>>> Please close the "Report Log Window" to exit <<<<<<<


    Was sagt mir das Ergebnis ??? ?(

  • Was sagt mir das Ergebnis ???

    Offensichtlich wohl nichts, denn sonst würdest du diese Frage nicht stellen. ;)


    _DebugError() sagt...
    FAIL - _FTP_Connect
    Die Funktion _FTP_Connect() hat nicht wie erwartet ein Handle zurückgeliefert.
    _FTP_GetLastResponseInfo() lieferte leider keine detailierte Beschreibung des Fehlers.


    Der FTPStatusCallbackHandler sagt dazu aber...
    UNKNOWN status = 40


    Jedoch ohne dein Script zu sehen, will ich nicht weiter darüber nachdenken, was die Ursache dafür sein könnte.


    Das solltest du auch mal lesen:


    InternetConnect function


    List of FTP server return codes


    Und bitte - benutze in Zukunft einen Spoiler für solche langen Listen.

  • Habe testweise das Script von Bitnugger mal durchlaufen lassen, ausser den provozierten Fehlern habe ich kein Problem feststellen können!


    und HIER ein weiterer Hinweis, und HIER auch ...