Travaux sur Machine de acii
1. Un client HTTP minimal

Cette séance étudie un client HTTP en C capable de se connecter à un serveur HTTP. Il se contentera d’envoyer au serveur la requête exprimée sur le flux d’entrée, puis d’attendre sa réponse. Dans celle-ci, il distinguera en-têtes et contenu, et se bornera à placer ce dernier dans un fichier dont le nom sera déduit de l’en-tête MIME nommé Content-Type.

Tout d’abord, connectez-vous par telnet au serveur HTTP de votre propre machine. Saisissez :

GET /
puis lors d’une deuxième utilisation de telnet :
GET / HTTP/1.1
Host: 127.0.0.1
ici une ligne blanche

comme on le verra, ne pas préciser la version de HTTP conduit à une réponse sans en-tête, contrairement à la réponse suivante, beaucoup plus intéressante. De ce fait, le canevas donné en annexe suppose que les requêtes comportent le numéro de version et sont constituées de plusieurs lignes, terminées par une ligne vide.

Le client prend en argument sur la ligne de commande l’adresse Internet du serveur HTTP et son port. Il doit se connecter à ce serveur puis il rentre dans une boucle de lecture des lignes du flux d’entrée, qu’il envoie au serveur. Lorsqu’il lit une ligne vide il attend la réponse, la traite et s’arrête (le HTTP de base n’autorise qu’une seule requête par connexion).

Comme pour le serveur, on utilisera le makefile pour compiler séparément chaque fonction à écrire avant de les intégrer au canevas lors de l’édition de lien.


Makefile
client.c
peroraison.c
peroraison.h