[c] Coder un serveur web

Bonjour,

Etant élève en 1ère année de cycle ingénieur, il m'a été demandé de réaliser un serveur web de A... à Z mais j'y connais franchement rien ! o_O
Je me demandais si quelqu'un connaissait un livre ou un site sur le sujet qui pourrait m'être super utile !

Merci d'avance.
Ciao

9 réponses

  1. Modérateur
    Dans l'absolu, c'est pas très compliqué.

    En gros, c'est un socket serveur (généralement en écoute sur le port 80).

    Le navigateur vient se connecter sur ce port 80 et envoie:
    GET /repertoire/fichier HTTP/1.1

    ou bien:
    GET http://monserveur.com/repertoire/fichier HTTP/1.1


    Ce à quoi le serveur répond par:
    HTTP/1.1 200 OK
    Content-Length: 333
    Content-Type: text/html; charset=iso-8859-1
    

    suivi de 2 retours à la ligne, puis le fichier lui-même.

    Il y a quelques raffinements (par exemple le navigateur peut dire quelle est sa language, le serveur peut indiquer l'âge du fichier, etc.), mais le principe est là.

    Le gros du boulot, ça va être:

    - de parser les requêtes qui arrivent (extraire l'URL et d'éventuel paramètres)

    - écrire le dispatcheur d'URLs (exécuter des méthodes différentes en fonction des URL, ou bien renvoyer des fichiers stockés sur disque)

    - construire la réponse (choisir le Content-Type correspondant au fichier (ex: 'image/jpeg' pour les fichiers .jpg), envoyer un code erreur HTTP précis (404 si document pas trouvé, etc.).
    1. Merci beaucoup ! Je pensais plus à quelque chose comme des cours mais les liens que vous m'avez donné vont m'être super utiles ! :)
      1. Hello,
        Ce n'est pas si compliqué.
        Il te faudra des notions de sockets. Il te faudra te renseigner sur la RFC HTTP (je ne me rappelle plus exactement du numero).
        1. Modérateur
          Après il y a d'autres problématiques à gérer, comme les accès concurrents (plusieurs connexions à la fois), mais c'est déjà plus velu (programation multi-thread ou sockets asynchrones).
          1. Oui dans l'absolu y a rien de compliqué si tu te limite au basique, dès lors que tu sais manipuler les sockets dans le langage qu'on t'a imposé. Après c'est comme tout, on peut pousser très loin le schmilblick.

            Y a un truc qui m'étonne beaucoup : "Etant élève en 1ère année de cycle ingénieur, il m'a été demandé de réaliser un serveur web de A... à Z mais j'y connais franchement rien !"
            A moins de me tromper, je ne vois qu'une seule école qui applique ce principe stupide du "tiens voilà un sujet, tu te démerdes". Sans vouloir troller, c'est du côté de la porte d'Italie non ??