Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parEstelle Maurice Modifié depuis plus de 11 années
1
Cours de C – Séance dexercices 19 Octobre 2007
2
Objectif Ecrire un serveur HTTP Sans gérer la partie réseau, on utilisera un utilitaire pour cela Serveur gérant une seule requête
3
Protocole: client Protocole : – Requête client : GET /test.html HTTP/1.1\r\n Host: nom_de_l_hote\r\n Parameter: Value\r\n ….. \r\n Nécéssité de traiter les \r\n et les \n\n aussi.
4
Protocole: Serveur Protocole – Réponse serveur HTTP/1.0 200 OK\r\n – ( ou 404 Not Found, ou 500 Internal Error ) Content-Type: text/html\r\n – (ou image/jpeg, image/png, image/gif … ) Content-Length: 1242\r\n Connection: Close \r\n DATA
5
Etape 0 A laide de main_http.c et Struct_http.h créer le projet Rajouter à la main les fonctions manquantes (vides) Le faire compiler
6
Etape 1 Utiliser la structure définie dans http://people.via.ecp.fr/~henri/SA2008/.... http://people.via.ecp.fr/~henri/SA2008/ Struct_http.h Implémentation de la fonction read_request – Lire stdin jusquà la première ligne vide – Prévoir le cas où \r est converti en \n – Identifier le type de requête, et éventuellement appeler prepare_get_request
7
Etape 2 Implémentation de la fonction process_get_request – Trouver dans la première ligne le nom du fichier demandé (utiliser strchr) – Remplir la structure dont le pointeur est passé en argument
8
Etape 3 Coder la fonction prepare_get_response – Lire le fichier – Remplir le buffer de la structure – Remplir la longueur – Remplir le Content-Type
9
Etape 4 Coder la fonction post_response – Afficher dans lordre les métadonnées contenues dans la structure – \r\n – Afficher le contenu du buffer de réponse Cette fonction doit gérer les codes derreur RESPONSE_ERROR et RESPONSE_NOT_FOUND
10
Les astuces Le fichier : louvrir en lecture avec le more « rb », le « b » est TRES important Ajouter le mode binaire : _setmode(fileno(stdout), _O_BINARY); Penser que lutilitaire convertit les \r en \n !
11
On branche Utiliser le programme « netcat_modified » Le lancer avec largument « -L 8000 –e » Pointer le navigateur vers http://localhost:8000/test.html http://localhost:8000/test.html
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.