[c] Coder un serveur web
Fermé
XD
-
20 nov. 2006 à 19:59
phunk Messages postés 498 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 30 novembre 2006 - 21 nov. 2006 à 15:05
phunk Messages postés 498 Date d'inscription lundi 31 juillet 2006 Statut Membre Dernière intervention 30 novembre 2006 - 21 nov. 2006 à 15:05
A voir également:
- Serveur web en c
- Web office - Guide
- Changer serveur dns - Guide
- Adresse web - Guide
- Serveur pop - Guide
- Traduire une page web - Guide
9 réponses
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
21 nov. 2006 à 10:53
21 nov. 2006 à 10:53
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:
ou bien:
Ce à quoi le serveur répond par:
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.).
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.).
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
21 nov. 2006 à 01:18
21 nov. 2006 à 01:18
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
Essaye de regarder ici si tu trouves ton bonheur :
https://codes-sources.commentcamarche.net/
Bonne chance
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
21 nov. 2006 à 04:57
21 nov. 2006 à 04:57
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.
...
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.
...
phunk
Messages postés
498
Date d'inscription
lundi 31 juillet 2006
Statut
Membre
Dernière intervention
30 novembre 2006
193
21 nov. 2006 à 15:05
21 nov. 2006 à 15:05
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 ??
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 ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci beaucoup ! Je pensais plus à quelque chose comme des cours mais les liens que vous m'avez donné vont m'être super utiles ! :)
oberion
Messages postés
1253
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
29 septembre 2007
248
21 nov. 2006 à 09:41
21 nov. 2006 à 09:41
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).
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).
blux
Messages postés
26546
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 décembre 2024
3 319
21 nov. 2006 à 09:50
21 nov. 2006 à 09:50
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
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
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 659
21 nov. 2006 à 10:55
21 nov. 2006 à 10:55
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).
blux
Messages postés
26546
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 décembre 2024
3 319
21 nov. 2006 à 11:03
21 nov. 2006 à 11:03
La RFC de HTTP est dispo ici :
http://www.faqs.org/rfcs/rfc2616.html
http://www.faqs.org/rfcs/rfc2616.html