TcpServer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Phlox

Betreff: TcpServer

BeitragMi, März 26, 2008 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
also ich versuche gerade aus Spaß, ein kleinen Apache Klon zu schreiben...

Folgende Frage:Warum funktioniert dieser Code nicht?

Code: [AUSKLAPPEN]
server=CreateTCPServer(80)
If server=0 Then RuntimeError "Server konnte nicht erstellt werden!"


timer=CreateTimer(60)
While Not KeyDown(1)
   
   WaitTimer(timer)
   
   dats=AcceptTCPStream(server)
   
   
   If dats>0 Then
      Print ReadString$(server)
      
   EndIf
   
   
Wend


CloseTCPServer server
End


Zuerst funktioniert er, das Fenster bleibt leer.
Dann, wenn ich in meinen Browser 127.0.0.1 eingebe,
gibt es einen MAV. Ich habe B3D v1.98, weil ich gehört habe,
dass es mit der neuen Version Probleme gibt.


Tia Phlox
 

Dreamora

BeitragMi, März 26, 2008 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst nicht an port 80 binden und dann erwarten dass dein client nicht abkratzt wenn du mit browser den port 80 anspringst womit der client aus der leitung denn du überprüfst ob dats > 0 was nichts bringt denn selbst wenn der stream stirbt ändert sich eine variable die du vorher zugewiesen hast nicht durch magie

Lies bitte die beschreibungen der anderen tcp stream funktionen damit du die notwendigen überprüfungen etc ebenfalls machst.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Phlox

BeitragMi, März 26, 2008 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Fehler gefunden, ich habe jetzt meinen Code geändert:


Code: [AUSKLAPPEN]
Graphics 1024,768,32,2
SetBuffer BackBuffer()


server=CreateTCPServer(80)
If server=0 Then RuntimeError "Server konnte nicht erstellt werden!"


timer=CreateTimer(60)
While Not KeyDown(1)
   
   WaitTimer(timer)
   
   dats=AcceptTCPStream(server)
   
   
   If dats>0 Then
      lst$=ReadString$(dats)
      Print lst$
      
      If lst$="" Or Left(lst$,1)=" " Then
         WriteString server,"<html><head><title>HI</title></head><body>HI!</body></html>"
         
      EndIf
   EndIf
   
   Flip
Wend

CloseTCPServer server
End


Gibt (seltsamerweise) das aus, wenn man es in eine Datei schreibt:

Zitat:
/ HTTP/1.1
Accept: */*
Accept-Language: de
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; Media Center PC 4.0; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM)
Host: 127.0.0.1
Connection: Keep-Alive

-gaaaanz viele Leerzeichen-


Warum erkennt Blitz das jetzt nicht und schickt die Daten?
 

Dreamora

BeitragMi, März 26, 2008 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
1. ist es auch jetzt noch falsch
2. Weil du nichts schickst. Du schreibst irgendwas in den Stream, das ist schön. Interessiert den Browser aber nen feuchten Kericht wenn du dich nicht ans HTTP Protokol hältst (entweder 1.0 oder 1.1). Einfach was reinschreiben is net, das kannst du nur machen wenn du eigene programme schreibst die genau diese daten erwarten. jedes normale programm folgt einem Protokol / Standard den du zu befolgen hast wenn du mit ihm Daten austauschen willst, egal auf welchem Weg.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Phlox

BeitragMi, März 26, 2008 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Und jetzt?

Code: [AUSKLAPPEN]
Graphics 1024,768,32,2
SetBuffer BackBuffer()

file=WriteFile("test.txt")
main=OpenFile("test.html")

server=CreateTCPServer(80)
If server=0 Then RuntimeError "Server konnte nicht erstellt werden!"


timer=CreateTimer(60)
While Not KeyDown(1)
   
   WaitTimer(timer)
   
   dats=AcceptTCPStream(server)
   
   
   If dats>0 Then
      lst$=ReadString$(dats)
      WriteLine file,lst$
      Print lst$
      Flip
      
      If lst$="" Or Left(lst$,1)=" " Then
         WriteString server,"HTTP/1.1 200 OK"
         WriteString server,"Server: Testserver/0.0.3 (Windows)"
         WriteString server,"Content-Length: "+FileSize("test.html")
         WriteString server,"Content-Language: de"
         WriteString server,"Content-Type: text/html; charset=utf-8
         WriteString server,""
         While Not Eof(main)
            WriteString server,ReadLine(main)
         Wend
         CloseFile main
         main=0
         main=OpenFile("test.html")
      EndIf
   EndIf
   
   Flip
Wend

CloseFile file
CloseTCPServer server
End

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group