Étape 4: Modification des fichier serveur appelé newserver.lua, la clé du multi-pages Web.
J’ai maintenant téléchargé les fichiers appelés newserver.lua, index.htm et bob.htm au module ; Redémarré et entra dans dofile("newserver.lua").
Entrer mon numéro IP module'a doit afficher le fichier index.htm. En cliquant sur le lien pour Bob affiche bob.htm et maison sera de retour à la page d’index.
Une discussion sur newserver.lua :
J’ai codé index.htm que le fichier « atterrissage ». Je veux le module pour desservir index.htm quand je rentre IP du module dans un navigateur.
J’utilise du code LUA pour analyser la requête entrante d’en-tête afin de déterminer si la requête spécifie un fichier ou non. Une demande de juste de mon module IP numéro de 192.168.11.44 ne spécifie pas un fichier particulier.
Une partie d’un index requérant en-tête typique. peut ressembler à :
GET / HTTP/1.1
Hôte : 192.168.11.44 Connection : keep-alive
Accepter : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
..............etc.
Cette demande pose pour bob.htm :
GET /bob.htm HTTP/1.1
Hôte : 192.168.11.44 connexion : KeepAlive Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8... etc.
L’analyse du premier exemple, newserver.lua ne trouverait pas un fichier spécifique pour ouvrir. Puisque je veux index.htm à la fichier atterrissage, lorsque tgtfile retourne zéro, j’ai remplacer index.htm. Ligne 6.
L’analyse de l’en-tête de la deuxième demande permettra d’identifier que la demande est de spécifier un fichier, dans ce cas, « bob.htm ». Ainsi, bob.htm est ouvert et envoyés une seule ligne à temps avec le code de client : send(file.read()).
Il est important de file.read() pas les fichiers qui n’existent pas.
Cela entraînera le module à la panique et redémarrer.
Donc, avant la lecture, j’ai tester pour voir si le fichier existe avec file.Open (), lignes 7 et 8.
Si aucun fichier, newserver.lua simplement renvoie « fichier introuvable » et un lien retour vers la page de destination.
Cela se produit lorsque je clique sur Jill ou barbe jusqu'à ce que j’ai télécharger des fichiers htm pour eux.
------------------------------------------------------
- --newserver.lua
- SRV=net.createServer (net. TCP)
- SRV:Listen(80,Function(conn)
- Conn : on("receive", function(client,payload)
- tgtfile = string.sub (payload,string.find (charge utile, "GET / ») +5,string.find(payload,"HTTP/") -2)
- Si tgtfile == "" puis tgtfile = « index.htm » fin
- local f = file.open(tgtfile,"r")
- Si f ~ = nil then
- client : send(file.read())
- file.Close()
- d’autre
- client : send("<html>")
- client : send(tgtfile.."not Found-404 error.")
- client : send("<a href='index.htm'>Home</a>")
- fin
- client : close()
- CollectGarbage()
- f = nil
- tgtfile = nil
- fin)
- fin)
_____________________________________