Il s'agit d'un petit serveur Web écrit en C qui prend en charge un sous-ensemble des spécifications HTTP 1.0. Le serveur;
• devrait être en mesure de gérer les demandes simultanées
• Implémentez les méthodes HTTP Get and Head
• Gérer et répondre aux demandes non valides.
Vous devriez être en mesure de démontrer que votre serveur Web est capable de livrer votre page d'accueil à un navigateur Web. Vous devez implémenter la version 1.0 de HTTP, tel que défini dans RFC 1945, où des demandes HTTP distinctes sont envoyées pour chaque composant de la page Web. Le serveur sera en mesure de gérer plusieurs demandes de service simultanées en parallèle. Cela signifie que le serveur Web est multi-thread. Dans le thread principal, le serveur écoute un port fixe. Lorsqu'il reçoit une demande de connexion TCP, il configure une connexion TCP via un autre port et services la demande dans un thread séparé.
Pour simplifier cette tâche de programmation, nous développerons le code en deux étapes. Dans la première étape, vous pouvez écrire un serveur multi-thread qui affiche simplement le contenu du message de demande HTTP qu'il reçoit. Une fois ce programme en cours d'exécution correctement, vous pouvez ajouter le code requis pour générer une réponse appropriée.
Au fur et à mesure que vous développez le code, vous pouvez tester votre serveur à partir d'un navigateur Web, tel que Chrome, Safari, Firefox Web Browser en tant qu'application client HTTP. Mais n'oubliez pas que vous ne servez pas via le port standard 80, vous devez donc spécifier le numéro de port dans l'URL que vous donnez à votre navigateur. Par exemple, si le nom de votre machine est testhost.mydomain.com, votre serveur écoute le port 6789, et que vous souhaitez récupérer le fichier index.html, vous spécifieriez l'URL suivante dans le navigateur: http: // testhost.mydomain.com:6789/index.http:
Si vous omettez ": 6789", le navigateur supposera le port 80 qui n'aura probablement pas de serveur qui écoute.
Lorsque le serveur rencontre une erreur, il envoie un message de réponse avec la source HTML appropriée afin que les informations d'erreur s'affichent dans la fenêtre du navigateur.
Exigences générales:
• La bibliothèque POSIX (pthread) sera utilisée.
• Le serveur prend trop de demandes, mais il ne peut renvoyer la réponse seulement 10 demandes. Plus de 10 demandes sont refusées. Dans cet état, le serveur renvoie un message «serveur est occupé»
• Le serveur accepte les demandes qui seront des fichiers HTML et JPEG. Les autres types n'accepteront pas