socket servidor programas para hechos famosos compilar compilador cliente c++ c linux

programas - Cómo escribo un servidor web en C/C++ en Linux



programas famosos hechos en c++ (6)

Con la biblioteca libevent, puede escribir un servidor web en 40 líneas de código c.

http://www.ruilog.com/article/view/5249.html

Si desea crearlo desde cero, puede hacer referencia al servidor web de código abierto escrito en c como lighttpd, apache, nginx.

Estoy buscando desarrollar un servidor web pequeño (léase: rudimentario) en una plataforma Linux y no tengo ni idea de dónde empezar.

Lo que quiero que sea capaz de hacer es:

  • Escuche en un puerto específico
  • Toma la publicación HTTP y recibe solicitudes
  • Responda apropiadamente
  • No se requiere gestión de sesión
  • Tiene que estar en C o C ++
  • Tiene que ejecutarse como un servicio en el arranque

Estoy familiarizado con los encabezados HTTP y soy un experimentado desarrollador web de PHP y .Net, pero no estoy seguro de dónde comenzar con esta tarea.

¿Me puede recomendar algunos recursos para cerrar la curva de aprendizaje?


De arriba hacia abajo, necesitarás saber sobre:

  • Protocolo HTTP
  • Servidor TCP - Programación de socket BSD
  • escribiendo un daemon Unix básico (servicio persistente)
  • gestión de procesos (tenedor)
  • análisis de texto (leer un archivo de texto de configuración)
  • manejo de archivos (E / S)
  • depuración de la programación C / C ++ :)

Por lo tanto, tendrá que aprender a escribir una aplicación básica de Unix, programación de socket BSD para la programación de red TCP / IP y el protocolo HTTP.

Los textos comúnmente utilizados incluyen:

Desarrollo de aplicaciones Unix:

  • Programación avanzada en el entorno Unix, Stevens & Rago
  • Programación avanzada de Unix

Programación TCP / IP (sockets):

  • Programación en red Unix, volumen 1 Stevens et all
  • TCP / IP ilustrado, Stevens
  • Ineternetworking con TCP / IP, Volumen 3, Comer

Protocolo HTTP

  • RFC incluyendo
  • RFC 2616 para HTTP v1.1,
  • RFC 2068 para pre-v1.1
  • más otros dependiendo del soporte (compresión, URI / URL) y completitud

Para un servidor HTTP SIMPLE / BASIC / ULTRA-LIGHT, el flujo del programa debería ser algo así (en pseudo-código):

----Main thread---- Load settings while true do Wait for connection Connection received, create a new thread and transfer this connection to this thread. end ----Connection thread---- Analyze request if dynamic content do Dump the HTTP request and send it to the interpreter Wait for response from the interpreter Read response header from the interpreter Stream response else if static content do Load requested file Stream file content end (Optional) Cache the response if size < X Send the response Close the socket

Por lo tanto, debe aprender Threading, Interprocess-communication (si desea interactuar con un intérprete), Socket programming y el protocolo HTTP.


Siempre puedes comenzar con una base de código existente. boa puede ser un comienzo ya que es pequeño, implementado en C y adecuado para su requisito de ''inicio al arrancar''; los detalles son, por ejemplo, en el paquete Debian / Ubuntu.