Mal wieder ein tcp-problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Smily

Betreff: Mal wieder ein tcp-problem

BeitragFr, Okt 27, 2006 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich habe mal wieder ein Problem mit tcp.
Und zwar geht es darrum, dass ich ein kleines Programm machen will, um mir Datei herunterzuladen (mal wieder so ein lange-weile-projekt ^^)

Für das Beispiel nehmen wir einfach mal folgende:
http://www.freewebtemplates.co.../zip/1.zip
(Ist ein design. Aber die Datei dient jetzt einfach mal als Beispiel)

Wenn man diese URL mit dem Browser aufruft, kann man sie ganz normal herunterladen.

Jetzt habe ich einfach mal den Beispielcode für OpenTcpStream leicht umgeschrieben, um die Datei abzufragen.
Code: [AUSKLAPPEN]
Print "Verbinde..."
tcp=OpenTCPStream("www.freewebtemplates.com",80)
If Not tcp Print "Fehlgeschlagen": WaitKey: End
Print "Verbunden! Sende Anfrage..."
WriteLine tcp,"GET http://www.freewebtemplates.com/downloads/templates/zip/1.zip HTTP/1.0"
WriteLine tcp,Chr$(10)
If Eof(tcp) Print "Fehlgeschlagen.": WaitKey: End
Print "Anfrage gesendet! Warte auf Antwort..."
While Not Eof(tcp)
Print ReadLine$( tcp )
;Print "Bytes verfügbar:" + ReadAvail(tcp)
Wend
If Eof(tcp)=1 Then Print "Erfolgreich!" Else Print "Fehler!"
CloseTCPStream tcp
WaitKey()
End


Aber hier bekomme ich ein 403-Forbidden vom Server.
Das komische ist allerdings mit jedem geläufigen Browser geht es.
Wie muss ich die Anfrage machen, damit ich vom server die Datei bekomme?

thx4help,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

FOODy

BeitragFr, Okt 27, 2006 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab jetzt kein B3D aber versuch das mal so:
Code: [AUSKLAPPEN]
Print "Verbinde..."
tcp=OpenTCPStream("www.freewebtemplates.com",80)
If Not tcp Print "Fehlgeschlagen": WaitKey: End
Print "Verbunden! Sende Anfrage..."

WriteLine tcp,"GET /downloads/templates/zip/1.zip HTTP/1.0"+chr(10)
WriteLine tcp,"Host: www.freewebtemplates.com"+chr(10)

WriteLine tcp,Chr$(10)
If Eof(tcp) Print "Fehlgeschlagen.": WaitKey: End
Print "Anfrage gesendet! Warte auf Antwort..."
While Not Eof(tcp)
Print ReadLine$( tcp )
;Print "Bytes verfügbar:" + ReadAvail(tcp)
Wend
If Eof(tcp)=1 Then Print "Erfolgreich!" Else Print "Fehler!"
CloseTCPStream tcp
WaitKey()
End


Ich meine irgendwo gelesen zu haben das man den Host im HTTP-Header angeben muss.


Gruß,
FOODy



EDIT:
Ich machs ma unter Edit weil es meiner Meinung nach nichts konstruktives ist...

Ich hab es mal in BlitzMax portiert (war kein großes ding).
Den Header Bekomme ich:
Zitat:
HTTP/1.0 403 Forbidden
Server: squid/2.5.STABLE10
Mime-Version: 1.0
Date: Fri, 27 Oct 2006 14:49:39 GMT
Content-Type: text/html
Content-Length: 1109
Expires: Fri, 27 Oct 2006 14:49:39 GMT
X-Squid-Error: ERR_ACCESS_DENIED 0
X-Cache: MISS from Prolexic.com
Connection: close


Hat das dickgedruckte eine bedeutung?
Mit dem Browser geht es aber wirklich : /



@B3D:
Damit meinte ich BlitzBasic ^^"
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
  • Zuletzt bearbeitet von FOODy am Fr, Okt 27, 2006 16:54, insgesamt einmal bearbeitet

Smily

BeitragFr, Okt 27, 2006 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne. Das ist auch nicht wirklich hilfreich.
Mir ist auch aufgefallen, dass dieses Problem nur bei freewebtemplates.de auftritt, was mir allerdings immer noch nicht sagt wo der Fehler liegt.

Wenn ich die datei mit dem Browser abrufen kann muss es doch auch mit bb

mfg, Smily0412

btw: Was hat das denn B3D zu tun haben?
Zitat:
Hab jetzt kein B3D aber versuch das mal so:
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Dreamora

BeitragFr, Okt 27, 2006 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls die Page einen Block für Download Programme hät, wäre das die Erklärung warum es nicht geht.

Auch gibt es seiten, die externes Linking verbieten und intern beim Zugriffsversuch im Browser umleiten, was natürlich dein Programm auch nicht nehmen würde.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Smily

BeitragFr, Okt 27, 2006 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber woher "weis" der Server denn, ob ich die Seite mit einem Browser oder womit auch immer aufrufe.
Letztendlich schickt der Browser doch auch nur genau so wie Blitzbasic eine HTTP-Anfrage an den Server.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Vertex

BeitragFr, Okt 27, 2006 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
User-Agent wird bei allen Browsern mit geschickt. Musst mal mit Etheral o. ä. einfach mal den Datenaustausch zw. deinem Browser und der Seite loggen.

mfg olli
vertex.dreamfall.at | GitHub

Smily

BeitragFr, Okt 27, 2006 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Vertex hat Folgendes geschrieben:
User-Agent wird bei allen Browsern mit geschickt. Musst mal mit Etheral o. ä. einfach mal den Datenaustausch zw. deinem Browser und der Seite loggen.

mfg olli


Ich glaube ich bin zu blöd das Teil zu bedienen. Embarassed
Kannst du mal bitte für mich loggen, was zwichen Server und Client hin- und her geschickt wird, und es dann hier schreiben?
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Vertex

BeitragSa, Okt 28, 2006 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
user posted image
Eigentlich super leicht:
Capture -> Capture Filters... -> HTTP TCP port(80)
Capture -> Start

mfg olli
vertex.dreamfall.at | GitHub

Mathias-Kwiatkowski

BeitragSo, Okt 29, 2006 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
hi sowas eventuell?




so rufst du die funktion auf

Code: [AUSKLAPPEN]

 Download("http://url.de/file.txt, CurrentDir$()+"fiele.txt)


und das ist die funktion

Code: [AUSKLAPPEN]

Function Download(Inputfile$,outputfile$, Port%=80)

 Local host$
 Local host_tmp
 Local stream
 Local file

;------------------------------- Den Host aus InputFile$ rausfiltern
 host$=Right(inputfile$,Len(inputfile$)-7) ; http:// rausschneiden
 host_tmp=Instr(host$,"/")-1               ; Das erste Slash im String suchen und 1 abziehen
 host$=Left(host$,host_tmp)                ; Den Text bis zu dem ersten Slash-1 k?rzen
 ;------------------------------ TCPStream zum Host ?ffnen
 stream = OpenTCPStream(host$,Port%)
;------------------------------- Datei Anfordern
 WriteLine stream, "GET "+Inputfile$+ " HTTP/1.1"
 WriteLine stream, "Host: "+host$
 WriteLine stream, ""
;------------------------------- Datei auf der Festplatte erstellen
 file = WriteFile(outputfile$)
;------------------------------- Das Ende des HTTP Headers suchen
 For a=0 To 100
  tmp$=ReadLine(stream)
  If Instr(Lower$(tmp), "content-type")>0 Then ReadLine(stream) : Exit
 Next
;------------------------------- Datei downloaden
 While Not Eof(stream)
    ettr=ReadByte(stream)
  WriteByte file,ettr
 
   
 Wend
;------------------------------- Alles wieder Schlie?en
 CloseFile file
 CloseTCPStream stream
End Function


das geht auch mit bmp rar zip oder oder oder[/code]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group