Sorry, nochmal zum mitschreiben: DOWNLOADS (abgeschlossen)
Übersicht

![]() |
DATISBetreff: Sorry, nochmal zum mitschreiben: DOWNLOADS (abgeschlossen) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also erstmal entschuldigung, dass ich es nicht so ganz verstanden habe. Ich habe seit 3 Jahren mit BlitzBasic programmiert, bin aber erst jetzt ( ![]() Und jetzt habe ich vor ein Programm zu schreiben, dass jedesmal, wenn man es startet, die aktuelle "news.txt" von www.datis.de.vu runterlädt (http://www.datis.de.vu/news.txt). Mein Problem ist jetzt folgendes: Invalid Stream handle. Mein Code: Code: [AUSKLAPPEN] file=ReadFile("http::www.datis.de.vu/news.txt")
file1=WriteFile("C:\news.txt") While Not Eof(file) WriteByte file1,ReadByte(file) Wend CloseFile(file) CloseFile(file1) End Ja, das habe ich nur abgeschrieben und leicht verändert. Aber der springende Punkt ist, warum es nicht klappt, wenn man es ausführt. |
||
Frauen und Technik?
Männer und BHs? Beides möglich. |
- Zuletzt bearbeitet von DATIS am Do, Jul 20, 2006 10:31, insgesamt einmal bearbeitet
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weil es "http::*meineurl*" Nur bei BlitzMax gibt.
Bei BB muss man es etwas anders machen. Dort must du via HTTP die Datei selbst anfordern. |
||
![]() |
DATISBetreff: Beispiel?! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, dann habe ich mich wohl einmal verschaut, als ich dach gesucht habe. Da bin ich dann wahrscheinlich zu BlitzMax gekommen. ![]() Aber wie gesagt kann ich mit Internet und Netzwerk überhaupt nichts. Könntet ihr einmal ein (ganz kurzes) Beispiel machen? Ich habe das mit dem Anfordern nicht ganz verstanden (sorry). Wenn ich ein Beispiel hätte, wäre es einfacher für mich das zu verstehen. |
||
Frauen und Technik?
Männer und BHs? Beides möglich. |
![]() |
Willi die Rübe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst eine TCP Verbindung über den StandartPort 80 zu dem Server aufbauen. Und mittels HTTP(Hypertext Transfer Protocol) die Datei anfordern.
Code: [AUSKLAPPEN] stream = OpenTCPStream("datisweb.da.funpic.de", 80)
WriteLine stream, "GET http://datisweb.da.funpic.de/news.txt HTTP/1.1" WriteLine stream, "Host: datisweb.da.funpic.de" WriteLine stream, "" Nun sendet der Webserver einige Headerinformationen, wie z.B. die Größe oder den Name. Am Ende ist immer in Leerzeichen, weshalb man den Header leicht überspringen kann: Code: [AUSKLAPPEN] Repeat
l$=ReadLine(stream) If Instr(Lower(l$), "content-length: ") then contentlength=Int( Mid(l$, Instr(l$, " ")) ) Until l="" Jetzt muss man nur noch, wie du es in deinem Code ja auch hast, alles weitere in eine Datei schreiben: Code: [AUSKLAPPEN] dat=WriteFile("news.txt")
Repeat WriteByte dat, ReadByte(stream) Until Eof(stream)=1 Und natürlich alle Streams wieder beenden: Code: [AUSKLAPPEN] CloseFile dat
CloseTCPStream stream Gesamter Code: Code: [AUSKLAPPEN] stream = OpenTCPStream("datisweb.da.funpic.de", 80)
global contentlength% WriteLine stream, "GET http://datisweb.da.funpic.de/news.txt HTTP/1.1" WriteLine stream, "Host: datisweb.da.funpic.de" WriteLine stream, "" Repeat l$=ReadLine(stream) If Instr(Lower(l$), "content-length: ") then contentlength=Int( Mid(l$, Instr(l$, " ")) ) Until l="" dat=WriteFile("news.txt") For a=1 to contentlength% WriteByte dat, ReadByte(stream) Next CloseFile dat CloseTCPStream stream Und fertig ist unser Eiersalat ![]() Edit: Ja, BORNtobeNAMELESS hat, nach ein paar Tests, doch Recht ![]() Edit2: Nochmal den Headerkrams verbessert ![]() |
||
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX At the Farewell Party visit: MySpace | Homepage |
- Zuletzt bearbeitet von Willi die Rübe am Sa, Aug 05, 2006 15:45, insgesamt 2-mal bearbeitet
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
<Willi die Rübe> hat Folgendes geschrieben: Hier sollte man aufpassen, denn ein Webserver sendet nur bei bekannten Datentypen einen Header.
Das ist mir neu. Wieso sollte der Server dann keinen Header senden? Dann wäre es ja kein HTTP mehr! Also eigentlich kommt da immer ein Header, sogar bei einem Error. Und dein Filtern nach dem content-type finde ich auch recht seltsam. Warum nicht einfach: Code: [AUSKLAPPEN] Local line$ = ReadLine(stream)
While line line = ReadLine(stream) Wend Das liest gezielt den kompletten Header weg. |
||
Skulk |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich denke er meint dass kein "content-type" gesendet wird.
Somit funzt das instr nicht mehr und die schleife wird zur Endlosschleife |
||
War doesn't determine who's right,
war determines who's left... |
![]() |
DATISBetreff: Wow, kapiert ;-) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke.
Ich habe zwar ein bisschen gebraucht um da erstmal durchzuschauen u.s.w. aber am Ende (als ich es kapiert habe) funktionierte es. Vielen Dank. |
||
Frauen und Technik?
Männer und BHs? Beides möglich. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group