2012-01-15 20 views
6

¿Cuál es una buena opción para un servidor HTTP simple lib? No necesita alto rendimiento. Prefiero buscar algo simple para algunas comunicaciones REST/JSON ("API").Servidor HTTP simple lib

Debe poder trabajar en un entorno multiproceso y debe poder gestionar solicitudes de POST de gran tamaño.

¿Alguna sugerencia? Ya probé cpp-netlib, pero esto parece ser demasiado complicado para una tarea tan fácil ...

Editar: Estoy buscando algo realmente ligero y simple. P.ej. como Sinatra en el mundo de Ruby. Poco es para mí otro ejemplo de una biblioteca demasiado pesada.

+1

posible duplicado de [Open Source C/C++ servidor web incorporado] (http: // stackoverflow .com/questions/738273/open-source-cc-embedded-web-server) –

+1

@MK. de hecho lo es, pero esa es una pregunta cerrada de 2009, las cosas probablemente sean diferentes hoy en día. Poco no está allí, por ejemplo. ¡Hay probablemente/otras/preguntas más recientes! – Stefano

+0

tal vez revise http://stackoverflow.com/questions/7980006/http-and-https-server-library-for-c - eso es realmente reciente. – Stefano

Respuesta

10

El primero que viene a la mente es la biblioteca Poco plataforma cruzada (http://pocoproject.org/)

, estable, bien documentados. Si bien la biblioteca en sí ofrece más de lo que probablemente necesite, puede construir y omitir las porciones que no planea usar para reducir la hinchazón.

Tienen una biblioteca Net completamente equipada que incluye varias clases destacadas y utilidades.

Aquí es un PDF de diapositivas de esa biblioteca, de particular interés es la clase HTTPServer: http://pocoproject.org/slides/200-Network.pdf

+0

Parece una gran biblioteca, pero estoy buscando algo más liviano. – Philip

3

les animo a comenzar con las muestras de servidor http en boost.asio. Son tan simples y fáciles de entender, que debería poder extenderlos fácilmente según sea necesario.

Sin embargo, si usted quiere saltar a algo más pulido que código sólo muestra, que sé de 3 servidores HTTP en C++ que se pueden probar:

  • "x0 - HTTP Marco servidor Web" a mí personalmente éste parece más prometedora, ya que es ligero y fácil
  • "de alta potencia/xiva" es una infraestructura de servidor http simple para la entrega de notificaciones a los navegadores
  • "Pion, un proyecto de los laboratorios atómicos" es una parte de marco elaborado para manejar grandes cantidades de datos
+0

¡Gracias, este código de ejemplo de impulso es actualmente mi solución favorita! Ese código como biblioteca y todos mis deseos se cumplirían ... – Philip

+0

Bastante trivial para cambiar estas muestras al código de la biblioteca: convierta 'int main()' en la función de hilo y comience en su propio hilo; agregar a la función server.hpp '" void stop() {io_service_.stop();} 'y exponerlo en algún lugar correctamente. Sin embargo, estas muestras son, como dije antes, algo sin pulir, por ejemplo, el cierre del socket en la conexión puede perder datos que se envían etc. – bronekk

0

Personalmente, iría por Arachnida (http://arachnida.sf.net) pero eso podría deberse a que lo escribí.