Serveur Web
Publié : lun. 08/oct./2012 21:13
J'ai repris l'exemple de l'aide pour me créer un serveur web, l'exemple utilise un gosub, j'ai voulu le supprimer et mettre une procédure mais voilà ça ne marche plus; je vous poste un petit exemple illustrant le problème, je ne comprend pas (possible que je fasse une grosse boulette mais là je vois pas!)
Code : Tout sélectionner
Global ClientID.i
Procedure Main()
erreur$ = "HTTP/1.1 404 OK" + EOL$
erreur$ = erreur$ + "Server: Atomic Web Server 0.2b" + EOL$
erreur$ = erreur$ + "Content-Length: " + Str(56) + EOL$
erreur$ = erreur$ + EOL$
erreur$ = erreur$ + "<HTML><HEAD></HEAD><BODY>Page inexistante!</BODY></HTML>"
erreur.l = 1
Debug "********************"
SendNetworkData(ClientID, @erreur$, Len(erreur$))
EndProcedure
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 8080
BaseDirectory$ = "www/"
DefaultPage$ = "Index.html"
AtomicTitle$ = "Atomic Web Server v1.0"
Global EOL$
EOL$ = Chr(13) + Chr(10)
If CreateNetworkServer(0, Port)
OpenWindow(0, 100, 200, 230, 0, "Atomic Web Server (Port " + Str(Port) + ")")
Repeat
Repeat
WEvent = WindowEvent()
If WEvent = #PB_Event_CloseWindow : Quit = 1 : EndIf
Until WEvent = 0
SEvent = NetworkServerEvent()
If SEvent
ClientID.i = EventClient()
Select SEvent
Case 1 ; When a new client has been connected...
Case 4 ; When a client has closed the connection...
Default
*Buffer = AllocateMemory(2000)
RequestLength.l = ReceiveNetworkData(ClientID, *Buffer, 2000)
; Essayer l'un ou l'autre
;-----------------------------------------------------------------------------------------------------
;Fonctionne!
erreur$ = "HTTP/1.1 404 OK" + EOL$
erreur$ = erreur$ + "Server: Atomic Web Server 0.2b" + EOL$
erreur$ = erreur$ + "Content-Length: " + Str(56) + EOL$
erreur$ = erreur$ + EOL$
erreur$ = erreur$ + "<HTML><HEAD></HEAD><BODY>Page inexistante!</BODY></HTML>"
erreur.l = 1
Debug "********************"
SendNetworkData(ClientID, @erreur$, Len(erreur$))
;-----------------------------------------------------------------------------------------------------
; Ne fonctionne pas!
;Main()
;-----------------------------------------------------------------------------------------------------
EndSelect
Else
Delay(20) ; Don't stole the whole CPU !
EndIf
Until Quit = 1
CloseNetworkServer(0)
Else
MessageRequester(AtomicTitle$, "Error: can't create the server (port in use ?).", 0)
EndIf
End