Datei download

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Sir Gauss der III

Betreff: Datei download

BeitragMi, Jul 06, 2011 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Da ich momentan recht wenig Zeit habe, aber für einen Freund ein kleines Programm erstellen soll, wollte ich mal nachfragen ob jemand Lust und Laune hat mir kurz und bündig das vorgehen zum Downloaden \evtl uploaden einer Datei zu erläutern.

Nebenbei, die Forumssuche hat mir zwar ein stück weiter geholfen, doch müsste ich da noch viel mehr zeit reinstecken als mir gerade recht ist.

Verweise auf Googel bzgl. FTP und HTTP helfen mir nicht sehr, da auch hier gilt: zu Zeitaufwendig.

soweit bin ich derzeit gekommen (vom Verständniss):
Code: [AUSKLAPPEN]

tcp=OPENTCPSTREAM("www.blitzbasement.com",80)
;stellt verbindung zum server her (kann man mit Port 80 downloaden oder nur mit 21?)


WRITELINE tcp,"GET http://www.blitzbasement.com HTTP/1.0"
WRITELINE tcp,CHR$(10)
;sendet den entsprechenden Befehl



WHILE NOT EOF(tcp)
   PRINT ReadLine$( tcp )
   PRINT "Bytes verfügbar:" + READAVAIL(tcp)
;liest ankommende Daten aus
WEND



CLOSETCPSTREAM tcp
WAITKEY()
END


Nun ja, wie gesagt, mir fehlt hier einfach die Zeit das nötige wissen raus zu suchen. wenn jemand ein kleinen Beispielcode bringen könte, oder die nötigen HTTP\FTP Befehle währe ich sehr dankbar.

gruß Sir Gauss

Pummelie

BeitragMi, Jul 06, 2011 22:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Port 21 ist für FTP Port 80 ist für HTTP.
Das http://www. in der GET Anfrage solltest du dir schenken.
Also, sendest du folgenden Header:
BlitzBasic: [AUSKLAPPEN]
WriteLine(stream,"GET /datei.dat HTTP/1.1") ;Die gewünschte Datei:
WriteLine(stream,"Host: www.deindomain.de") ;Den Server (ohne http://) angeben
WriteLine(stream,"") ;ende des Header


Der Server Antwortet im Erfolgsfall mit einer der folgenden ersten Zeilen:
HTTP/1.1 200 OK
HTTP/1.0 200 OK

Der Rest der Antwort ist uninteressant, bis auf die Zeile: Content-Lengh:
Der Server muss diese aber nicht senden!
Sie enthält die Größe der Datei.

Auslesen der Antwort geht so:
BlitzBasic: [AUSKLAPPEN]
Local re$=ReadLine$(stream)
Select re$
Case "HTTP/1.0 200 OK"
Case "HTTP/1.0 200 OK"
Default
RuntimeError("Serverfehler!")
End Select
Repeat
re$=ReadLine$(stream)
If Left$(re$,15)="Content-Length:" Then
Local size=Right$(re$,Len(re$)-16)
EndIf
Until re$=""

Im besten Fall hast du in size nun die Dateigröße und kannst die Datei wie folgt downloaden:
BlitzBasic: [AUSKLAPPEN]
Local bank=CreateBank(size)
Local file=WriteFile("datei.dat")
ReadBytes(bank,stream,0,size)
WriteBytes(bank,file,0,size)
CloseTCPStream(stream)
It's done when it's done.

Sir Gauss der III

BeitragDo, Jul 07, 2011 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen Dank, das hilft mir sehr weiter.

Thema hat sich somit erledigt und kann geschlossen werden.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group