FTP Verbindung sofort abgebrochen
Verfasst: 03.07.2012 16:47
Hallo PBler
Vorgeschichte, Frage gibts im nächsten Absatz. Ich hab Purebasic wieder ausgepackt und mir überlegt, was ich machen will. Dabei kam ich darauf, mir ein Programm zu machen, dass die Episodenbeschreibungen für Babylon 5 herunterlädt. Hab ich mir kürzlich komplett zugelegt. Bald war ich fertig. Dann kanm mir die Idee, dass das Programm doch auch gleich einen druckbaren Episodenguide erzeugen könnte. Begann mich in LaTeX einzuarbeiten und ein LaTeX Include zu schreiben. funktioniert nun auch
Das Include werde ich nach Überarbeitung online stellen.
Schließlich wollte ich die IMDB Bewertungen der Episoden mit hineinbringen. Da mein Programm später auch für andere Serien funktionieren soll, sollte es sie automatisch holen. Sie liegen hier: ftp://ftp.fu-berlin.de/pub/misc/movies/ ... gs.list.gz doch der FTP Download will nicht klappen.
Ich habe mir eine kleine Funktion geschrieben um vom FTP-Server Dateien herunterzuladen. Leider schließt der sofort nach dem erfolgreichen OpenFTP die Verbindung. Kann mir jemand verraten, woran das liegt und wie ich es umgehen kann?
Minimalbeispiel:
Kompletter Code (include):
Vorgeschichte, Frage gibts im nächsten Absatz. Ich hab Purebasic wieder ausgepackt und mir überlegt, was ich machen will. Dabei kam ich darauf, mir ein Programm zu machen, dass die Episodenbeschreibungen für Babylon 5 herunterlädt. Hab ich mir kürzlich komplett zugelegt. Bald war ich fertig. Dann kanm mir die Idee, dass das Programm doch auch gleich einen druckbaren Episodenguide erzeugen könnte. Begann mich in LaTeX einzuarbeiten und ein LaTeX Include zu schreiben. funktioniert nun auch
Das Include werde ich nach Überarbeitung online stellen.
Schließlich wollte ich die IMDB Bewertungen der Episoden mit hineinbringen. Da mein Programm später auch für andere Serien funktionieren soll, sollte es sie automatisch holen. Sie liegen hier: ftp://ftp.fu-berlin.de/pub/misc/movies/ ... gs.list.gz doch der FTP Download will nicht klappen.
Ich habe mir eine kleine Funktion geschrieben um vom FTP-Server Dateien herunterzuladen. Leider schließt der sofort nach dem erfolgreichen OpenFTP die Verbindung. Kann mir jemand verraten, woran das liegt und wie ich es umgehen kann?
Minimalbeispiel:
Code: Alles auswählen
InitNetwork()
If OpenFTP(1,"ftp.fu-berlin.de","anonymous","")=0
MessageRequester("Error","Could not connect to Ftp Server")
Else
Debug "Connection state: "+Str(CheckFTPConnection(1))
Debug "Connected, dir is '"+GetFTPDirectory(1)+" ' "
EndIfCode: Alles auswählen
;- remove initnetwork!
InitNetwork()
Procedure FTPDownloadToFile(ftppath$,target_file$)
Debug "FTP descend to dir"
ftppath$=RemoveString(ftppath$,"ftp://")
; Descend to target dir
For a=1 To CountString(ftppath$,"/")
part$=StringField(ftppath$,a,"/")
If a=1
If OpenFTP(1,part$,"anonymous","")=0
MessageRequester("Error","Could not connect to Ftp Server")
ProcedureReturn -1
Else
Debug "Connected, Dir is '"+GetFTPDirectory(1)+" ' "
EndIf
Else
If SetFTPDirectory(1,part$)=0
;- ##debug remove
ExamineFTPDirectory(1)
Debug "ftp connection state "+Str( CheckFTPConnection(1))
Debug "dirlisting"
Debug "Name"+Chr(9)+"dir?"
While NextFTPDirectoryEntry(1)
Debug FTPDirectoryEntryName(1)+Chr(9)+Str(FTPDirectoryEntryType(1)-1)
Wend
;- ##debug end
MessageRequester("Error","Path seems wrong, cannot descent to"+Chr(10)+"'"+part$+"'")
ProcedureReturn -1
EndIf
EndIf
Next
Debug "searching dir to get size"
;search file To get file size
file$=StringField(ftppath$,CountString(ftppath$,"/")+1,"/")
If ExamineFTPDirectory(1)
While NextFTPDirectoryEntry(1)
name$=FTPDirectoryEntryName(1)
If name$=file$
size=DirectoryEntrySize(1)
Break
EndIf
Wend
Else
MessageRequester("Error","Cannot scan target Directory")
ProcedureReturn -1
EndIf
Debug "FTP Downloading"
If ReceiveFTPFile(1,file$,target_file$,#True) And size
win=OpenWindow(#PB_Any,0,0,400,100,"FTP Download "+file$,#PB_Window_ScreenCentered)
text=TextGadget(#PB_Any,5,5,390,30,"Startup",#PB_Text_Center)
progress=ProgressBarGadget(#PB_Any, 5,45,390,50,0,size,#PB_ProgressBar_Smooth)
Repeat
WaitWindowEvent(20)
status=FTPProgress(1)
Select status
Case #PB_FTP_Started
SetGadgetText(text,"connecting ...")
Case #PB_FTP_Error
SetGadgetColor(text,#PB_Gadget_FrontColor,$FF)
SetGadgetText(text,"ERROR!")
MessageRequester("Error","File Download encountered an Error")
CloseWindow(win)
ProcedureReturn -1
Case #PB_FTP_Finished
SetGadgetColor(text,#PB_Gadget_BackColor,$FF00)
SetGadgetText(text,"Finished")
Delay(500)
Default
SetGadgetText(text,"Downloading...")
SetGadgetState(progress,status)
EndSelect
Until status=#PB_FTP_Finished
Else
MessageRequester("Error","File download could not be started")
ProcedureReturn -1
EndIf
EndProcedure
;- remove test
Debug FTPDownloadToFile("ftp.fu-berlin.de/pub/misc/movies/database/ratings.list.gz","ratings.list.gz")