133 votes

Comment construire un serveur HTTP simple en C

J'ai besoin de construire un simple serveur HTTP en C.
Des conseils? Liens? Des échantillons?

141voto

Ates Goral Points 47670

Je vous recommande de jeter un oeil à: Un Guide Pratique pour Écrire des Clients et des Serveurs

Ce que vous avez à mettre en œuvre en plusieurs étapes:

  1. Obtenez votre base de sockets TCP couche en cours d'exécution (écouter sur le port/ports, accepter les connexions des clients et envoyer/recevoir des données).
  2. Mettre en œuvre un tampon lecteur de sorte que vous pouvez les demandes de lecture d'une ligne (délimité par un CRLF) à la fois.
  3. Lire la première ligne. Analyser la méthode, la version de requête et le chemin d'accès.
  4. Mettre en œuvre l'analyse de l'en-tête de "en-Tête: la valeur de syntaxe". N'oubliez pas de dépliage plié en-têtes.
  5. Vérifier la méthode de la requête, le type de contenu et la taille du contenu à déterminer comment/si le corps va être lu.
  6. Mettre en œuvre le décodage du contenu basé sur le type de contenu.
  7. Si vous allez à l'appui de HTTP 1.1, mettre en œuvre des choses comme "100 Continuer", keep-alive, bloc de transfert.
  8. Ajouter de la robustesse/mesures de sécurité, comme la détection des demandes incomplètes, en limitant le nombre maximum de clients.
  9. Emballage de votre code et de l'open source :)

97voto

Adam Rosenfield Points 176408

Je vous suggère de jeter un oeil à httpd minuscule . Si vous voulez écrire à partir de zéro, alors vous aurez envie de lire attentivement la RFC 2616 . Utilisez les sockets BSD pour accéder au réseau à un niveau très bas.

39voto

Adam Davis Points 47683

Un serveur HTTP est un concept simple:

  • Ouvrir le port 80 pour l'écoute
  • Lorsque le contact est établi, recueillir un peu de l'information (obtenir principalement - vous pouvez ignorer le reste pour l'instant)
  • Traduire la demande en une demande de fichier
  • Ouvrir le fichier et de le recracher sur le client

Il devient de plus en plus difficile en fonction de combien de HTTP, vous souhaitez soutenir POST est un peu plus compliqué, de scripts, de traitement de plusieurs demandes, etc.

Mais la base est très simple.

30voto

Bob Nadler Points 1959

Mongoose (anciennement Simple HTTP Daemon) est plutôt bon. En particulier, il est intégrable et compile sous Windows, Windows CE et UNIX.

13voto

Eclipse Points 27662

Ouvrez un socket TCP sur le port 80, commencez à écouter de nouvelles connexions, implémentez -le . Selon vos objectifs, vous pouvez presque tout ignorer. Au plus simple, vous pouvez envoyer la même réponse pour chaque demande, ce qui implique simplement l'écriture de texte dans le socket.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X