programacion - Cree un servidor HTTP simple en C
manual de programacion android pdf (12)
Abra un socket TCP en el puerto 80, comience a escuchar nuevas conexiones, implemente this . Dependiendo de tus propósitos, puedes ignorar casi todo. En la forma más fácil, puede enviar la misma respuesta para cada solicitud, lo cual implica escribir texto en el socket.
Necesito construir un servidor HTTP simple en C. ¿Alguna guía? ¿Campo de golf? Muestras?
Hay un duplicado con más respuestas .
Un candidato no mencionado aún es spserver .
He escrito el mío que puedes usar. Este funciona con sqlite, es seguro para subprocesos y está en C ++ para UNIX.
Debería poder separarlo y usar el código compatible con C.
Las especificaciones HTTP y Firebug fueron muy útiles para mí cuando tuve que hacerlo para mi tarea.
Buena suerte con los tuyos :)
Mira nweb (servidor web de Nigel), "un servidor web pequeño y seguro [...] con solo 200 líneas de código fuente C":
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing http://www.ibm.com/developerworks/systems/library/es-nweb/
El artículo incluye pseudocódigo, explicaciones y comentarios.
EDITAR: el enlace de IBM ha muerto. Guarde un PDF de la página web en Google Drive. Aquí está la descarga del código:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ ankushagarwal ha realizado algunos cambios y ha subido su versión en GitHub: https://github.com/ankushagarwal/nweb
Sugeriría mirar la fuente a algo como lighthttpd .
Te recomiendo que le eches un vistazo a: Una guía práctica para escribir clientes y servidores
Lo que debe implementar en pasos incrementales es:
- Obtenga su capa básica de sockets TCP ejecutándose (escuche en puerto / puertos, acepte conexiones de clientes y envíe / reciba datos).
- Implemente un lector en búfer para que pueda leer las solicitudes de una línea (delimitada por CRLF) a la vez.
- Lea la primera línea. Analice el método, la versión de solicitud y la ruta.
- Implementar el análisis del encabezado para la sintaxis "Encabezado: valor". No olvide desplegar encabezados doblados.
- Compruebe el método de solicitud, el tipo de contenido y el tamaño del contenido para determinar cómo / si se leerá el cuerpo.
- Implementar la decodificación de contenido basado en el tipo de contenido.
- Si va a admitir HTTP 1.1, implemente cosas como "100 Continue", keep-alive, chunked transfer.
- Agregue medidas de robustez / seguridad, como detectar solicitudes incompletas, limitar el número máximo de clientes, etc.
- Envuelva su código y open-source :)
Te sugiero que eches un vistazo a la pequeña httpd . Si desea escribir desde cero, querrá leer a fondo RFC 2616 . Use conectores BSD para acceder a la red a un nivel realmente bajo.
Un servidor HTTP es conceptualmente simple:
- Abra el puerto 80 para escuchar
- Cuando se establece contacto, reúna un poco de información (obtenga principalmente; puede ignorar el resto por ahora)
- Traducir la solicitud en una solicitud de archivo
- Abra el archivo y escúpelo en el cliente
Se vuelve más difícil según la cantidad de HTTP que desee admitir: POST es un poco más complicado, secuencias de comandos, manejo de solicitudes múltiples, etc.
Pero la base es muy simple.
-Adán
Utilice las funciones de socket específicas de la plataforma para encapsular el protocolo HTTP, al igual que los tipos detrás de Apache .
Mongoose (anteriormente Simple HTTP Daemon) es bastante bueno. En particular, es integrable y se compila en Windows, Windows CE y UNIX.
http://www.manning.com/hethmon/ - "Guía ilustrada de HTTP de Paul S. Hethmon" de Manning es un muy buen libro para aprender el protocolo HTTP y será muy útil para alguien que lo implemente / extienda.