Loading s7crs_l09_http_server...

enib_small.png S7-CRS L09_HttpServer — Serveur HTTP

Les fichiers servant de support à cette expérimentation seront obtenus par la commande $ cp -r /home/TP/sujets/CRS_L09_HttpServer . depuis les salles de Labo de l'ENIB, ou par la commande $ sftp -P 55555 -r votre_identifiant@sftp.enib.fr:/home/TP/sujets/CRS_L09_HttpServer . depuis l'extérieur de l'ENIB.

Nous réutilisons ici nos connaissances en matière de serveur TCP dans le contexte du protocole HTTP.
Il s'agit en effet d'un protocole applicatif très largement utilisé et reposant sur le protocole de transport TCP.
Comme dans toute architecture TCP nous distinguons les rôles client et serveur : cet exercice se focalise essentiellement sur le rôle serveur.
Il s'agira principalement :

La consultation de la documentation est très importante et fait partie intégrante du travail.
Pour ceci vous disposez des pages de manuel indiquées à chaque exercice ainsi que de ces documents de programmation réseau.
En particulier, le document Memo_HTTP.pdf devrait beaucoup vous guider puisqu'il décrit la structure des requêtes et des réponses HTTP.
Le fichier d'en-tête crsUtils.hpp doit également être consulté très régulièrement puisqu'il fournit, au delà de quelques fonctionnalités utilitaires, la mise à disposition dans une forme facilitée pour les étudiants (limitation des pointeurs, des conversions de types, utilisation de chaînes et vecteurs C++, contrôle des échecs...) des appels et fonctionnalités systèmes que nous utiliserons.

Vous êtes censés savoir refaire et réutiliser tous ces exercices lors des séances ultérieures ; n'hésitez donc pas à poser des questions lors de cette séance et à les refaire tout seul ensuite pour vous entraîner.
{1 #tcp } Serveur TCP multi-threads
{2 #minimal } Échange requête/réponse HTTP minimal
{3 #file } Transfert de fichier
{4 #dir } Liste du contenu d'un répertoire
{5 #post } Échange de données applicatives par requêtes POST
{6 #websocket } Échange de données applicatives par websocket
{7 #cgi } Exécution de processus CGI

Nous venons de découvrir les principes qui permettent de réaliser un serveur HTTP.
Bien au delà de la simple délivrance de documents préalablement préparés, les quelques éléments d'une telle réalisation peuvent être introduit dans une application quelconque afin de lui offrir des possibilité d'interaction avec un client HTTP (navigateur ou autre).