Mein Prog als HTML SERVER

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: Mein Prog als HTML SERVER

BeitragMo, Nov 02, 2009 7:46
Antworten mit Zitat
Benutzer-Profile anzeigen
nun ja da ich an meinem online game arbeite mit hilfe Bnet Modul, möchte ich gern auch das dieses programm die guten spieler anzeigt also highscore wenn man meine domain (ip) "momentan ist es bei mir Localhost serverport 81"

also gebe ich im browser localhost:81 ein und dann soll ein text halt im browser angezeigt werden, erstmal nix grossartiges, habe mir dazu einfach dieses exemple vom modul angesehn und es getestet , es sieht wie folgt aus:

Code: [AUSKLAPPEN]
SuperStrict

Import Vertex.BNetEx



Global Server  : TTCPStream, ..
       Clients : TList, ..
       Client  : TTCPStream

Try

Server = New TTCPStream
If Not Server.Init() Then Throw("Can't create socket")
If Not Server.SetLocalPort(81) Then Throw("Can't set local port")
If Not Server.Listen() Then Throw("Can't set to listen")

Clients = New TList

Repeat
   Client = Server.Accept()

   If Client Then
      WriteStdout("New Client:~n" + ..
                  " - IP:" + TNetwork.StringIP(Client.GetLocalIP()) + "~n" + ..
                  " - Port:" + Client.GetLocalPort() + "~n")
      Clients.AddLast(Client)
   EndIf

   For Client = EachIn Clients
      If Client.GetState() <> 1 Then
      
      WriteStdout("Client disconnected:~n" + ..
                  " - IP:" + TNetwork.StringIP(Client.GetLocalIP()) + "~n" + ..
                  " - Port:" + Client.GetLocalPort() + "~n")
         Client.Close()
         Clients.Remove(Client)
         Continue
      EndIf

      If Client.RecvAvail() Then
         While Client.RecvMsg() ; Wend
                      
         If Client.Size() > 0 Then
            
            WriteStdout("Message from client:~n" + ..
                        " - IP:" + TNetwork.StringIP(Client.GetLocalIP()) + "~n" + ..
                        " - Port:" + Client.GetLocalPort() + "~n")
                     
                     Client.ReadLine()
                     
                     
            While Not Client.Eof()
               WriteStdout(">"+Client.ReadLine() + "~n")
            Wend

            Client.WriteLine("Willkommen")
               
            
            While Client.SendMsg() ; Wend
         EndIf
      EndIf
   Next
Forever

Catch Exception:Object
   WriteStdout("Error~n " + Exception.ToString())
End Try

If Server Then Server.Close()
WriteStdout("~n- ready -~n")
End


mit anderen worten wenn ich das prog starte und dann im browser mein localhost:81 eingebe soll er Willkommen schreiben ->also willkommen im browser schreiben.<-

das geht leider nicht, obwohl im server programm mir ausgegeben wird welchen Browser ich grag nutz ect...

wo ist der fehler? bzw warum geht es nicht, wie geht es einfacher oder geht sowas generell?

Very Happy viele fragen, aber bin dankbar um jede antwort die mir helfen kann.
danke im vorraus
 

#Reaper

Newsposter

BeitragMo, Nov 02, 2009 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh...
also...:
1. Es gibt keinen HTML-Server.
2. Solltest du dich generell erstmal mit Netzwerkfunktionen und Protokollen allgemein beschäftigen.
3. Wenn du das getan hast, kannst du dir ja mal das HTTP-Protokoll ansehen, dass ich nämlich das, was du hierfür brauchst. Dem Browser einfach irgendetwas zusenden geht nicht.
Wink

MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Mathias-Kwiatkowski

BeitragMo, Nov 02, 2009 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
dann wunderts mih das es unter windows XP funktioniert und unter Windows Vista & Windows 7 nicht Very Happy... habs ja vorher getestet.
 

#Reaper

Newsposter

BeitragMo, Nov 02, 2009 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt dann wahrscheinlich eher an dem Browser. (IE?)
Weil der Browser sollte eigentlich nicht einmal das von dir gesendete akzeptieren, so ganz ohne HTTP-Header. :-/
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Mathias-Kwiatkowski

BeitragMo, Nov 02, 2009 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
^nein wenn das server prog auf win xp läuft kann es jeder browser sehen das ->Willkommen

hazumu-kun

BeitragMo, Nov 02, 2009 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Nope, ein Browser hällt sich an das HTTP-Protokoll, wenn du keinen HTTP-Header sendest, antwortet der Browser idR mit nem 5xx Fehler, ala: "The Server send a bad response"
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Mathias-Kwiatkowski

BeitragMo, Nov 02, 2009 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
mhh der header sollte eig gehen oder nicht?

Code: [AUSKLAPPEN]
EOL:String = Chr(13)+Chr(10)   
         Client.WriteLine "HTTP/1.1 200 OK"+eol
         Client.WriteLine "Server: Hallo" +eol
         Client.WriteLine "Content-Length: "+Len("Willkommen")+eol
         Client.WriteLine "Content-Type: text/html"+eol
         Client.WriteLine "Willkommen"


*falls das gehen soll, tuts nur nicht

Artemis

BeitragDi, Nov 03, 2009 8:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach den Headern und vor dem Inhalt muss eine Komplett leere Zeile kommen, die fehlt aber bei dir.

Mathias-Kwiatkowski

BeitragMi, Nov 04, 2009 7:18
Antworten mit Zitat
Benutzer-Profile anzeigen
mhh funtzt net, ausgabe des servers

Code: [AUSKLAPPEN]
New Client:
 - IP:127.0.0.1
 - Port:52579
Message from client:
 - IP:127.0.0.1
 - Port:52579
>Host: localhost:81
>User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.4) Gecko/20091016 YFF35 Firefox/3.5.4
>Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
>Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
>Accept-Encoding: gzip,deflate
>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
>Keep-Alive: 300
>Connection: keep-alive



und so is mein prog aufgebaut

Code: [AUSKLAPPEN]
SuperStrict

Import Vertex.BNetEx

Global EOL:String = Chr(13) + Chr(10)

Global Server  : TTCPStream, ..
       Clients : TList, ..
       Client  : TTCPStream

Try

Server = New TTCPStream
If Not Server.Init() Then Throw("Can't create socket")
If Not Server.SetLocalPort(81) Then Throw("Can't set local port")
If Not Server.Listen() Then Throw("Can't set to listen")

Clients = New TList

Repeat
   Client = Server.Accept()

   If Client Then
      WriteStdout("New Client:~n" + ..
                  " - IP:" + TNetwork.StringIP(Client.GetLocalIP()) + "~n" + ..
                  " - Port:" + Client.GetLocalPort() + "~n")
      Clients.AddLast(Client)
   EndIf

   For Client = EachIn Clients
      

      If Client.GetState() <> 1 Then
      
      WriteStdout("Client disconnected:~n" + ..
                  " - IP:" + TNetwork.StringIP(Client.GetLocalIP()) + "~n" + ..
                  " - Port:" + Client.GetLocalPort() + "~n")
         Client.Close()
         Clients.Remove(Client)
         Continue
      EndIf

      If Client.RecvAvail() Then
         While Client.RecvMsg() ; Wend
                      
         If Client.Size() > 0 Then
            
            WriteStdout("Message from client:~n" + ..
                        " - IP:" + TNetwork.StringIP(Client.GetLocalIP()) + "~n" + ..
                        " - Port:" + Client.GetLocalPort() + "~n")
                     
                     Client.ReadLine()
                     
                     
            While Not Client.Eof()
               WriteStdout(">"+Client.ReadLine() + "~n")
            Wend
            
            
            
            Client.WriteLine "" + EOL
            Client.WriteLine "HTTP/1.1 200 OK"+eol
            Client.WriteLine "Server: Hallo" +eol
            Client.WriteLine "Content-Length: "+Len("Willkommen")+eol
            Client.WriteLine "Content-Language: de"+eol
            Client.WriteLine "Content-Type: text/html"+eol
            Client.WriteLine "Connection: close"
            Client.WriteLine ""+eol
            Client.WriteLine "<html>" +eol
               Client.WriteLine"<head>" + eol
            Client.WriteLine"<title>Index von: " + "mir" + "</title>" +eol
               Client.WriteLine"</head>" + eol
               Client.WriteLine"<body bgcolor=" + Chr(34) + "#808080" + Chr(34) + ">" + eol
               Client.WriteLine"<center>" + eol
            Client.WriteLine "Willkommen"+eol
            client.WriteLine"</center>" +eol
               Client.WriteLine"</body>" + eol
               Client.WriteLine"</html>" + eol
              
            
            
            While Client.SendMsg() ; Wend
         EndIf
      EndIf
   Next
Forever

Catch Exception:Object
   WriteStdout("Error~n " + Exception.ToString())
End Try

If Server Then Server.Close()
WriteStdout("~n- ready -~n")
End

mpmxyz

BeitragMi, Nov 04, 2009 9:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm...
Schreibt "WriteLine" nicht schon Chr(13)+Chr(10) nach dem geschriebenen String?
In BlitzBasic ist es so und bei BlitzMax scheint es zumindest in einigen Forum-Threads auch so zu sein.
Es könnte gut möglich sein, das die freie Zeile zwischen den Headerdaten als Ende des Headers interpretiert wird.
Zum Debuggen solltest du mal noch ein "Client"-Programm schreiben, dass ausgibt, was der Server alles sendet.

Außerdem sendest du eine falsche Inhaltslänge.
Du hast die ganzen HTML-Tags bei der Berechnung der Größe vergessen.

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Hummelpups

BeitragMi, Nov 04, 2009 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würd einfach nen Apache Server aufsetzen und die dateien
in htdocs ändern oder eine html datei vom Programm ausgeben
lassen und diese via FTP oder was auch immer auf irgend nen
Server laden.

Micha
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

BtbN

BeitragMi, Nov 04, 2009 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder dem Programm ein interface verpassen, und dieses von PHP aus ansprechen.

Jolinah

BeitragMi, Nov 04, 2009 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Das folgende müsste eigentlich schon reichen:

Code: [AUSKLAPPEN]
Client.WriteLine "HTTP/1.1 200 OK"
Client.WriteLine "Content-Type: text/html"
Client.WriteLine "Connection: close"
Client.WriteLine ""
Client.WriteLine "Willkommen"


Das "+eol" ist - wie bereits gesagt - nicht nötig, da WriteLine schon einen Zeilenumbruch schreibt. Und am Anfang darf keine Leerzeile sein, nur zwischen HTTP-Header und dem eigentlichen Inhalt.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group