WebServer (test)
Posted: Tue Mar 07, 2006 9:18 am
Hi, i begin to use buffers and others pointers, i don't understand why that doesn't run when we test to access at the web server.
For having the error :
-launch the program
-launch a navigator
-access at 127.0.0.1
Thank you !
For having the error :
-launch the program
-launch a navigator
-access at 127.0.0.1
Code: Select all
;-Déclaration des globales
Global port.l
Global nameserver.s
;-Déclaration des fonctions
Declare NoGoth_Receive(*RBuffer,ClientID)
Declare NoGoth_RThread(message)
;-Initialisation des globales
port=80
nameserver.s="Server"
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
*Buffer = AllocateMemory(10000)
If CreateNetworkServer(0,port)
Repeat
Repeat
WEvent = WindowEvent()
If WEvent = #PB_Event_CloseWindow
Quit = 1
EndIf
Until WEvent = 0
SEvent = NetworkServerEvent()
If SEvent
ClientID.l = EventClient()
;Debug sevent
Select SEvent
Case #PB_NetworkEvent_Connect ; When a new client has been connected...
Case #PB_NetworkEvent_Data ; When a client has closed the connection...
ReceiveNetworkData(ClientID.l, *Buffer, 2000)
;Debug PeekS(*Buffer)
NoGoth_Receive(*Buffer,ClientID)
Case #PB_NetworkEvent_Disconnect
Case #PB_NetworkEvent_File
Default
EndSelect
Else
; Delay(20) ; Don't stole the whole CPU !
EndIf
Until Quit = 1
CloseNetworkServer(0)
Else
MessageRequester(nameserver, "Erreur : impossible de créer le serveur (port en utilisation ?).", 0)
EndIf
Procedure NoGoth_Receive(*RBuffer,ClientID)
PokeS(*Rbuffer,PeekS(*Rbuffer)+Chr(3)+Str(clientid))
CreateThread(@NoGoth_RThread(),*RBuffer)
EndProcedure
Procedure NoGoth_RThread(*message)
message.s= PeekS(*message)
pos=FindString(message,Chr(3),1)
clientID=Val(Mid(message,pos+1, Len(message)-pos-1))
type.s=Left(message,3)
If type="GET"
;Debug "get"
FreeMemory(*Buffer)
header.s = "HTTP/1.1 200 OK"+Chr(13)+Chr(10)
header = header+ "Date: Wed, 07 Aug 1996 11:15:43 GMT"+Chr(13)+Chr(10)
header = header+ "Server: Atomic Web Server 0.2b"+Chr(13)+Chr(10)
header = header+ "Content-Length: "+Str(141)+Chr(13)+Chr(10)
header = header+ "Content-Type: text/html"+Chr(13)+Chr(10)
header = header+ Chr(13)+Chr(10)
header = header+ "texte"
*Buffer=AllocateMemory(Len(header)+1)
PokeS(*Buffer,header)
Debug PeekS(*Buffer)
;*FileBuffer=AllocateMemory(Len("texte")+1)
;PokeS(*FileBuffer, "texte")
;Debug PeekS(*FileBuffer)
SendNetworkData(ClientID, *Buffer,MemorySize(*Buffer));*FileBuffer-*Buffer+6)
ElseIf type="POS"
Debug "pos"
ElseIf type="HEA"
Debug "hea"
EndIf
EndProcedure