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
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.
Todos los detalles no se pueden explicar aquí
Visite http://www.linuxhowtos.org/C_C++/socket.htm para crear un servidor básico usando C.
Otro de IBM: http://www.ibm.com/developerworks/systems/library/es-nweb/index.html
http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers
gracias OTRA VEZ wikipedia
Por cierto, es posible que desee Google "fuente abierta de servidor web incorporado"
(www) .ibm.com / developerworks / web / library / wa-ltwebserv /