[c] Coder un serveur web

XD -  
phunk Messages postés 507 Date d'inscription   Statut Membre -
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. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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.).
    9
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Tu peux partir des sources d'apache mais alors là bon courage.
    Essaye de regarder ici si tu trouves ton bonheur :
    https://codes-sources.commentcamarche.net/

    Bonne chance
    1
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    L'univers des serveurs http Open Source ne se limite pas à Apache
    http://www.lighttpd.net/
    http://www.roxen.com/solutions/cms/
    http://caudium.net/
    ...
    J'ai utilisé un mini serveur dont je ne me rappelle plus le nom sous FreeBSD il y a quelques années, j'essayerai de retrouver le nom et un lien.

    ...
    1
  4. phunk Messages postés 507 Date d'inscription   Statut Membre 195
     
    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 ??
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. XD
     
    Merci beaucoup ! Je pensais plus à quelque chose comme des cours mais les liens que vous m'avez donné vont m'être super utiles ! :)
    0
  7. oberion Messages postés 1255 Statut Membre 249
     
    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).
    0
  8. blux Messages postés 5035 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    il y a xitami qui est codé en C et en open source...

    Il est très léger, tu peux sûrement t'en inspirer...

    http://www.xitami.com
    0
  9. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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).
    0