User Tools

Site Tools


rx:tp7

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
rx:tp7 [2013/01/22 10:58] – created orelrx:tp7 [2024/03/18 15:06] (current) – external edit 127.0.0.1
Line 1: Line 1:
-TP 7 (Socket) +====TP7 (Socket Avançé)====
-==============+
  
-L'objectif de ce TP est de vous faire développer un serveur web +L'objectif de ce TP est de vous faire développer un serveur web minimaliste, respectant le protocole HTTP et pouvant fonctionner avec un navigateur web standard comme Firefox.
-minimaliste, respectant le protocole HTTP et pouvant fonctionner avec +
-un navigateur web standard comme Firefox.+
  
 Un peu de documentation sur le protocle HTTP :  Un peu de documentation sur le protocle HTTP : 
Line 10: Line 7:
   * http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol   * http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
  
-1) Requête Cliente (GET) +==Requête Cliente (GET)==
-------------------------+
  
-Lancez la commande "netcat -l 8080". Lancez le navigateur web firefox +Lancez la commande "netcat -l 8080". Lancez le navigateur web firefox et tapez l'URL "http://localhost:8080/index.html". Qu'observez-vous ?
-et tapez l'URL "http://localhost:8080/index.html". Qu'observez-vous ?+
  
 Interprétez les différentes lignes en vous aidant de Wikipedia :  Interprétez les différentes lignes en vous aidant de Wikipedia : 
Line 20: Line 15:
   * http://en.wikipedia.org/wiki/List_of_HTTP_headers   * http://en.wikipedia.org/wiki/List_of_HTTP_headers
  
-2) Réponse du Serveur +==Réponse du Serveur==
-----------------------+
  
-A l'aide de Telnet, produire une requête GET pour obtenir la page +A l'aide de Telnet, produire une requête GET pour obtenir la page d'accueil d'un serveur web comme celui du LaBRI (http://www.labri.fr).
-d'accueil d'un serveur web comme celui du LaBRI.+
  
-Voici un exemple de réponse, composé d'un entête HTTP et de la réponse +Voici un exemple de réponse, composé d'un entête HTTP et de la réponse HTML séparée par un saut de ligne.
-HTML séparée par un saut de ligne.+
  
   HTTP/1.1 200 OK   HTTP/1.1 200 OK
Line 49: Line 41:
   </html>   </html>
  
-Reproduisez l'expérience avec Telnet en demandant une page qui +Reproduisez l'expérience avec Telnet en demandant une page qui n'existe pas. Quelle est la réponse ?
-n'existe pas. Quelle est la réponse ?+
  
 +==Programmation d'un serveur web==
  
-3) Programmation d'un serveur web +En utilisant l'exemple de serveur fourni au TP 6, programmez un serveur web minimaliste qui renvoie les documents web contenus dans le répertoire d'accueil www/.
-----------------------------------+
  
-En utilisant l'exemple de serveur fourni au TP 6programmez un +Lors d'une requête GET pour un certain documentil y a trois cas à traiter :
-serveur web minimaliste qui renvoie les documents web contenus dans le +
-répertoire d'accueil www/.+
  
-Lors d'une requête GET pour un certain document, il y a trois cas à +  - la requête concerne un fichier d'extension .html : dans ce cas, on répond simplement ce document. 
-traiter : +  la requête concerne un répertoire : dans ce cas, on répond une page web contenant la liste des fichiers contenus dans ce répertoire (sous forme de liens hypertextes) ou on répond le fichier "index.html" si ce dernier existe. 
- +  la requête concerne un document qui n'existe pas : dans ce cas, on répond une erreur 404 (par exemple, un fichier "404.html").
-  1) la requête concerne un fichier d'extension .html : dans ce cas, +
-  on répond simplement ce document. +
- +
-  2) la requête concerne un répertoire : dans ce cas, on répond une +
-  page web contenant la liste des fichiers contenus dans ce répertoire +
-  (sous forme de liens hypertextes) ou on répond le fichier +
-  "index.html" si ce dernier existe. +
- +
-  3) la requête concerne un document qui n'existe pas : dans ce cas, +
-  on répond une erreur 404 (par exemple, un fichier "404.html").+
  
 A la fin du traitement, la connexion est systématiquement fermée. A la fin du traitement, la connexion est systématiquement fermée.
  
-Compléments +==Compléments==
-------------+
  
-Voici un extrait de code qui vous montre comment lister le contenu du +Voici un extrait de code qui vous montre comment lister le contenu du répertoire courant et comment différencier les fichiers réguliers des répertoires.
-répertoire courant et comment différencier les fichiers réguliers des +
-répertoires.+
  
 +<code>
   #include <sys/types.h>   #include <sys/types.h>
   #include <dirent.h>   #include <dirent.h>
Line 101: Line 78:
       printf("[file] %s\n", path);       printf("[file] %s\n", path);
   }   }
 +</code>
  
-Pour tester si le fichier "index.html" existe dans le répertoire +Pour tester si le fichier "index.html" existe dans le répertoire "path", on peut s'inspirer de l'extrait de code suivant : 
-"path", on peut s'inspirer de l'extrait de code suivant : +
  
 +<code>
   struct stat info;   struct stat info;
   char filename[255];    char filename[255]; 
Line 113: Line 91:
   if(ret == 0)   if(ret == 0)
     printf("%s found\n", filename);     printf("%s found\n", filename);
- +</code>
rx/tp7.1358852331.txt.gz · Last modified: 2024/03/18 15:05 (external edit)