FTP :: OpenFTP()

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Mr.X
Beiträge: 66
Registriert: 10.08.2005 22:46
Wohnort: im schönen OWL

FTP :: OpenFTP()

Beitrag von Mr.X »

OpenFTP() dauert bei mir sehr lange. Bis zu 10sek. ist das Programm blockiert. Die Verbindung wird dann aufgebaut und SendFTPFile(...) funktioniert; bis auf die Tatsache, daß im Asyncron-Modus der Wert #PB_FTP_Finished nicht erreicht wird und der Start des Transfers (Ergebnis = FTPProgress(ftpNo)) ebenfalls sehr lange dauert.

"ftpNo = OpenFTP(#PB_Any, FTP_Server$, FTP_User$, FTP_Pwd$)"

Hast jemand eine Idee wo das Problem liegen könnte?
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: FTP :: OpenFTP()

Beitrag von Kiffi »

Mr.X hat geschrieben:Hast jemand eine Idee wo das Problem liegen könnte?
welchen Server konnektierst Du? Die Ftp-Lib hat Probleme mit Microsoft Ftp-Servern.

Ansonsten kannst Du mal testen, ob es besser wird, wenn das Passive-Flag gesetzt ist.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: FTP :: OpenFTP()

Beitrag von Bisonte »

Mr.X hat geschrieben:... daß im Asyncron-Modus der Wert #PB_FTP_Finished nicht erreicht wird...
... ist ein bekannter Fehler in PB
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Mr.X
Beiträge: 66
Registriert: 10.08.2005 22:46
Wohnort: im schönen OWL

Re: FTP :: OpenFTP()

Beitrag von Mr.X »

Kiffi hat geschrieben:welchen Server konnektierst Du? Die Ftp-Lib hat Probleme mit Microsoft Ftp-Servern.
Kann jetzt spontan nicht beantworten, welche Server Strato einsetzt.
Ansonsten kannst Du mal testen, ob es besser wird, wenn das Passive-Flag gesetzt ist.
Keine Verbesserung. Hatte ich bereits zuvor getestet, das Passive-Flag explizit zu setzen und aich Port 21 zu benutzen, obwohl beide Einstellungen von PB ja als default gesetzt sein sollen.
Benutzeravatar
Mr.X
Beiträge: 66
Registriert: 10.08.2005 22:46
Wohnort: im schönen OWL

Re: FTP :: OpenFTP()

Beitrag von Mr.X »

Der betreffende Code-Abschnitt ...

Code: Alles auswählen

Procedure FTP_Upload()
    
    Debug "Upload"
    ftpNo = 1
    StatusBarText(#STB_Main, 2, "öffne FTP-Verbindung ...")
    ftpNo = OpenFTP(#PB_Any, #FTP_Server, #FTP_User, #FTP_Pwd, #True, 21)
    Debug ftpNox
    If ftpNo
        Result = SetFTPDirectory(ftpNo, #FTP_Directory)
        Debug Result
        Debug RWA_Datapath$ +"RWA_Liste.DAT"
        Result = SendFTPFile(ftpNo, RWA_Datapath$ +"RWA_Liste.DAT", "rwa_liste.dat", #True)
        ; Größe ist kleiner 10 KB
        Debug Result
        TimeStart = Date()
        Repeat
            ftp_Transfer = FTPProgress(ftpNo)
            Select ftp_Transfer
                Case #PB_FTP_Started
                    Debug "starting ftp"
                Case #PB_FTP_Error
                    AbortFTPFile(ftpNo)
                    Break
                Case #PB_FTP_Finished
                    Debug "finished ftp"
                Default
                    Delay(100)
                    Debug ftp_Transfer
            EndSelect
            ; ohne Timeout kein Ende
            If (Date() - TimeStart) > 30
                StatusBarText(#STB_Main, 2, "Transfer abgebrochen (TimeOut!)")
                Debug "Timeout!"
                Delay(2000)
                Break
            EndIf
            While WindowEvent() : Wend
        Until ftp_Transfer = #PB_FTP_Finished
        
        Result = SendFTPFile(ftpNo, RWA_Datapath$ +"RWA_TimeStamp", "rwa_timestamp", #False)
        Debug Result
        CloseFTP(ftpNo)
    EndIf
EndProcedure
Debugger Ausgabe
  • R:\RWA\RWA_Liste.DAT
    init network
    1
    ---
    1
    2
    Upload
    0
    1
    R:\RWA\RWA_Liste.DAT
    1
    starting ftp
    starting ftp
    [...]
    starting ftp
    starting ftp
    Timeout!
    1
Antworten