Derniere mise a jour : 9 fevrier 2026

Mini Serveur HTTP

2024 Reseau C

Presentation

Objectif principal : Un serveur HTTP basique en C qui sert des fichiers statiques. Tu lances le serveur, tu vas sur localhost:8080 dans ton navigateur, et il affiche les pages HTML du dossier.

Technologies utilisees : C avec les sockets POSIX (socket, bind, listen, accept). Parse les requetes HTTP a la main. Fork pour gerer plusieurs clients en parallele.

Fonctionnalites cles : GET pour recuperer des fichiers, types MIME corrects (HTML, CSS, JS, images), page 404 personnalisee, logs des requetes, timeout des connexions.

Livrables attendus : Un executable qui lance un serveur sur un port configurable. Capable de servir un site statique simple.

Calendrier previsionnel : Deux semaines. Les sockets c'est verbeux en C, y'a plein de gestion d'erreurs a faire.

Parties prenantes & criteres de succes : TP de programmation systeme. Le but c'etait de comprendre comment fonctionne HTTP au niveau bas.

Le Defi

Parser les requetes HTTP. Le format a l'air simple (GET /path HTTP/1.1) mais y'a plein de headers, des cas speciaux, des requetes mal formees a gerer... Et les fichiers binaires (images) qui posent probleme si tu lis ligne par ligne.

La Solution

Je lis la requete en entier dans un buffer, je parse juste la premiere ligne pour avoir la methode et le chemin. Les headers je les ignore (pour l'instant). Pour les fichiers, je les envoie en binaire avec fread/send au lieu de manipuler des strings.

Architecture Technique

main.c pour la boucle accept. request.c pour parser les requetes HTTP. response.c pour construire les reponses avec headers. mime.c pour determiner le Content-Type selon l'extension. Chaque client est gere dans un fork separé pour eviter de bloquer.

Points Cles

  • Sockets POSIX from scratch
  • Multi-clients avec fork
  • Types MIME automatiques

Apercu

Resultats & Apprentissages

Le serveur marche bien pour des sites simples. J'ai vraiment compris HTTP en le parsant a la main. Les sockets en C c'est verbeux mais au moins on comprend ce qui se passe. J'apprecie plus les frameworks web maintenant.

Evolutions Futures

Support des requetes POST. Threads au lieu de fork pour meilleures perfs. Keep-alive pour reutiliser les connexions. Peut-etre un mode CGI pour executer des scripts.

Retour aux projets Me contacter