Conseil ; commence par bien gérer la requete GET coté serveur et après tu t'occuperas des autres commandes.
En gros, ce qu'il faut faire coté serveur :
1*) Initialiser la connexion (tu l'as déjà fait)
2*) Mettre en attente de client avec la fonction accept (faire un man accept)
3*) Lorsqu'un client arrive, crée un thread qui s'occupera de gérer les requetes entre le client et le serveur (par exemple, pthread_create avec comme argument la socket du client en param. Faire un man pthread_create)
4*)Si ta requete est un GET, (par exemple GET <chemin> HTTP/<version>, version peut 1.0 ou 1.1), tu récupères le chemin du fichier
5*) Si le fichier existe, tu envoies au client
a) "HTTP1/<version> 200 OK"
b) le Content-Type (c'est a dire type de contenu). Ce sera text/html si un fichier html
c) Le content-Length : la taille de ton contenu, en l'occurrence la taille du fichier
d) une ligne blanche
e) Le contenu du fichier. Tant que t'as pas atteint la fin du fichier, tu balances son contenu sur la socket.
6*) Si le fichier n'existe pas, tu envoies :
a) "HTTP 404 NOT FOUND"
7*) Si la req est mal formée, "HTTP 400 BAD REQUEST"
Voila un serveur http minimal gérant uniquement la cmt GET.
Une fois, bien implémentée, tu peux t'attaquer à la cmd head, ou post, etc(ca va chauffer pr toi)
Pour tester, utilises ton client telnet et tu lui envoies la cmd GET.
Dernière chose, gère bien les fins de connexion![]()
Partager