TCP Stream

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Wild-Storm

Betreff: TCP Stream

BeitragSa, Feb 25, 2006 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Folgender Code:
Code: [AUSKLAPPEN]

TCPStream:TStream = OpenStream("TCP::"+TCPServer$+":80")
For I = 1 To CNT
 SENDHEADER$ = "GET /" + Dir$ + " HTTP/1.1" + Chr$(13)+Chr$(10)
 SENDHEADER$ = SENDHEADER$ + "Accept: *.*, */*" + Chr$(13)+Chr$(10)
 SENDHEADER$ = SENDHEADER$ + "Connection: close" + Chr$(13)+Chr$(10)
 SENDHEADER$ = SENDHEADER$ + "Range: bytes=0-" + Chr$(13)+Chr$(10)
 SENDHEADER$ = SENDHEADER$ + "Host: www.yourass.org" + Chr$(13)+Chr$(10)
 SENDHEADER$ = SENDHEADER$ + "Referer: www.yourass.org" + Chr$(13)+Chr$(10)
 SENDHEADER$ = SENDHEADER$ + "User-Agent: ROFL DI KARTOFFEL" + Chr$(13)+Chr$(10)
 SENDHEADER$ = SENDHEADER$ + Chr$(13) + Chr$(10)
 WriteLine TCPStream , SENDHEADER$
 Repeat
  i2 = i2 + 1
  ReadByte(TCPStream)
 Until Eof(TCPStream)
Next
CloseStream(TCPStream)


Und folgendes Problem:
TCPStream ist nach dem 1. Durchlauf NULL. D.h. BMax meckert rum, wenn ich beim 2. durchlauf senden will.
Jetzt kann ich natürlich OpenStream in die Schleife reinhauen, aber ich glaube nicht, dass das sonderlich ressourcenspaarend ist etc.

Gibt es eine Lösung? Oder ist der Code komplett fürn Arsch, weils andere Befehle für sowas gibt? XD

Edit: Es liegt NICHT an Connection: Close!
da:

Zitat:

HTTP/1.0

Under HTTP 1.0, there is no official specification for how keepalive operates. It was, in essence, tacked on to an existing protocol. If the browser supports keep-alive, it adds an additional header to the request:

Connection: Keep-Alive

Then, when the server receives this request and generates a response, it also adds a header to the response:

Connection: Keep-Alive

Following this, the connection is NOT dropped, but is instead kept open. When the client sends another request, it uses the same connection. This will continue until either the client or the server decides that the conversation is over, and one of them drops the connection.
HTTP/1.1

Under HTTP 1.1, the official keepalive method is different. All connections are kept alive, unless stated otherwise with the following header:

Connection: close

The Connection: Keep-Alive header no longer has any meaning because of this.

Additionally, an optional Keep-Alive: header is described, but is so underspecified as to be meaningless. Avoid it.
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

Markus2

BeitragDi, Feb 28, 2006 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Haste die Zeile mit 'Connection: close' mal auskommentiert ?

Wild-Storm

BeitragDi, Feb 28, 2006 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
bringt leider nix
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

Markus2

BeitragDi, Feb 28, 2006 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir Connection: Keep-Alive wohl auch nicht .
Dann mußte wohl immer nen neuen Stream aufmachen .
Kann auch sein das der Web Server ungültige Anfragen ablehnt .
Aber das müßtest du über die Antwort die er zurück schickt heraus bekommen .
Manche Server stören sich auch an den User-Agent bzw. lassen
nur die üblichen zu .

Wild-Storm

BeitragDi, Feb 28, 2006 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ne, die abfrage ist gültig. es kommt der quelltext der seite raus!

keep-alive bringt ebenfalls nix. alles schon probiert :/

(ich glaube es liegt am EOF, wenn man das weglässt, kann man den stream immernoch benutzen)
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

BtbN

BeitragDo, März 02, 2006 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Normale Webserver verlangen, dass man bei jeder anfrage einen neuen Stream zu ihnen auf macht.
Den alten wiederverwenden geht leider (noch) nicht.
Es wird an einer solchen Technik gearbeitet(Pipelining), allerdings ist diese noch zimlich unpopulär und man sollte sich nicht drauf verlassen, das alle Webserver sie unterstützen.
Deshalb vor jedem Request nen neuen Stream auf machn, ist die einzige Möglichkeit aktuell.

Wild-Storm

BeitragDo, März 02, 2006 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm...schonmal in BB ausprobiert?

[syntax="bb"]
tcp = OpenTCPStream("www.next-dimension.org",80)

For i = 1 To 10
SENDHEADER$ = "GET http://www.next-dimension.org/index.php HTTP/1.0" + Chr$(13)+Chr$(10)
SENDHEADER$ = SENDHEADER$ + "Accept: *.*, */*" + Chr$(13)+Chr$(10)
SENDHEADER$ = SENDHEADER$ + "Connection: Keep-Alive" + Chr$(13)+Chr$(10)
SENDHEADER$ = SENDHEADER$ + "Range: bytes=0-" + Chr$(13)+Chr$(10)
SENDHEADER$ = SENDHEADER$ + "Host: www.next-dimension.org" + Chr$(13)+Chr$(10)
SENDHEADER$ = SENDHEADER$ + "Referer: www.next-dimension.org"+ Chr$(13)+Chr$(10)
SENDHEADER$ = SENDHEADER$ + "User-Agent: " + Chr$(13)+Chr$(10)
SENDHEADER$ = SENDHEADER$ + Chr$(13) + Chr$(10)
WriteLine tcp,SENDHEADER$

Repeat
DebugLog ReadLine(tcp)
Until Eof(tcp)

Next

CloseTCPStream(tcp)
[/syntax]

Geht komischerweise OHNE neue TCP Stream erstellung..
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

D2006

Administrator

BeitragFr, März 03, 2006 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö. Geht nicht.

Schreibt die Seite nur einmal rein.
Das liegt daran, dass HTTP 1.0 wie BtbN sagte nur für eine Anfrage ausgelegt ist. "Connection: keep-alive" kennt nur HTTP 1.1, aber so richtig geklappt hat es bei mir noch nicht.

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Wild-Storm

BeitragFr, März 03, 2006 0:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohja stimmt, hatte auf ein MAV bei Writeline gewartet und nich auf die debuglog ausgabe geachtet!

thx anyway!
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875

rema

BeitragFr, März 03, 2006 1:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Normalerweise kann man den Server ja abfragen was dieser so alles kann. KeepAlive ist halt so eine Sache, die bei stark frequentierenden Seiten einen Server eine hohe Speicherlast verursacht, da ja normalerweise nach 10 Sek Schweigen die Verbindung abgebrochen wird.

Also, erstmals abfragen was der Server so drauf hat...

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group