Loading s7crs_l09_http_server...
{A} du programme fourni, vous créerez la
  socket d'écoute TCP associée au port choisi en ligne de commande.{B-1} du programme fourni, nous recevons ligne
  par ligne l'en-tête de la requête HTTP en s'arrêtant à la ligne vide qui
  en marque la fin.{B-2} nous préparons le document qui constituera
  le contenu de la réponse ; il n'est pas du tout question ici de
  protocole HTTP mais juste d'un message en HTML lisible par l'utilisateur
  du navigateur (ce n'est qu'un exemple similaire à ce que nous avons
  utilisé lors de l'expérimentation préparatoire avec la commande ncat).
Maintenant que le contenu de la réponse est connu, nous pouvons préparer
  un en-tête HTTP qui annoncera notre réponse au client.{B-2} du programme fourni est consacré à cet en-tête de
  réponse."\r\n"plutôt que simplement
"\n"au cas où un tel client fonctionnerait sous Windows (ce système code les fins de ligne avec ces deux caractères).
{C-1} du programme fourni, nous vérifions que la
  ressource réclamée désigne bien un fichier accessible ; il est donc
  envisageable d'en transférer le contenu vers le client.{C-1} pour rédiger et envoyer
  un en-tête de réponse HTTP.{C-2} afin de recopier
  le contenu du fichier désigné vers la connexion TCP.
En l'état, vous obtenez un serveur HTTP très simple permettant de délivrer
  des documents préalablement préparés dans des fichiers.{D} du programme fourni, nous traitons ce cas.
Il s'agit à nouveau de produire une page HTML lisible par l'utilisateur afin
  de lui offrir des liens vers les éléments du répertoire en question.
La démarche est très semblable à celle qui consistait à fournir un message
  d'erreur et doit être complétée par le point {D} qui produit et
  envoie l'en-tête de réponse HTTP annonçant ce contenu qui sera envoyé à
  la suite.
Testez votre serveur depuis votre navigateur afin de constater le bon
  comportement de cette fonctionnalité.{E-1} extrait et affiche la chaîne de caractères fournie par
  le client.{E-2} est, somme toute, très similaire à ce
  que nous avons réalisé jusqu'alors ; nous nous contentons simplement
  de préciser que nous renvoyons du texte brut.
De la même façon, nous traiterons le cas de requêtes POST /bin afin
  d'obtenir des données binaires en provenance du client.{E-3} extrait les octets attendus et suppose qu'ils constituent
  un tableau d'entiers ; bien entendu ceci est un choix applicatif ici et
  ces données binaires pourraient tout aussi bien avoir une toute autre
  signification.{E-4} est une nouvelle fois très
  similaire à ce que nous avons déjà réalisé ; nous nous contentons
  simplement de préciser que nous renvoyons des données brutes.
Désormais, le lien HTTP application de la page principale de notre
  serveur doit faire apparaître dans le navigateur une application simpliste
  qui envoie un message textuel au serveur lors de son démarrage et des
  messages textuels ou binaires selon l'usage des boutons qu'il propose.{F-1} afin de confirmer au client le fait que ce changement de
  protocole aura bien lieu.
Puisque avec les websockets chaque nouvelle information transmise peut à
  tout moment provenir du client ou du serveur, nous explorons cette
  possibilité dans notre application simpliste.{F-2}, crs::select() vient de nous
  promettre que la prochaine opération de réception sur la socket de
  dialogue ne sera pas bloquante.{F-3}.{F-4}, nous interprétons les octets
  obtenus comme un tableau d'entiers de 32 bits reçus en respectant
  l'ordre des octets du réseau.{F-5} et {F-6} traitent de messages spéciaux qui
  permettent de tester la connectivité et de réclamer la fin au dialogue.
Après avoir réagi à d'éventuels messages websocket reçus, les points
{F-7} et {F-8} permettent au serveur d'envoyer spontanément
  des informations au client (sans que celui-ci ne le demande
  préalablement).{F-?} du code correctement complétés, il
  devient possible d'exploiter le lien WebSocket application de la
  page principale de notre serveur.{G-1} de notre programme
  doit commencer par rédiger et envoyer le début de l'en-tête de réponse
  HTTP.{G-2} du programme fourni revient à
  utiliser un processus enfant afin que celui-ci opère des redirections
  d'entrées/sorties sur la connexion TCP avant d'être recouvert par le
  programme choisi.