Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* libmicrohttpd ejemplo de un holanavegador al escribir ip:8888 en el navegador
- * print_out_key ofrece un analisis de la conexion en el terminal del servidor
- * https://www.gnu.org/software/libmicrohttpd/
- cc hellobrowser.c -o hellobrowser -I$PATH_TO_LIBMHD_INCLUDES -L$PATH_TO_LIBMHD_LIBS -lmicrohttpd
- */
- #include <sys/types.h>
- #ifndef _WIN32
- #include <sys/select.h>
- #include <sys/socket.h>
- #else
- #include <winsock2.h>
- #endif
- #include <string.h>
- #include <microhttpd.h>
- #include <stdio.h>
- //Puesto donde apunta el navegador
- #define PORT 8888
- /*******************************************************************************************************************************/
- //Analisis de la conexion web por terminal en el servidor
- int print_out_key(void *cls,enum MHD_ValueKind kind,const char *key,const char *value){
- printf ("%s : %s \n",key,value);
- return MHD_YES;
- }
- /*******************************************************************************************************************************/
- int pagina_respuesta(struct MHD_Connection *connection,const char *pagina){
- return MHD_YES;
- }
- /*******************************************************************************************************************************/
- //Funcion respuesta al navegador ,tarea principal del servidor web
- static int
- answer_to_connection (void *cls, struct MHD_Connection *connection,const char *url, const char *method,const char *version, const char *upload_data,
- size_t *upload_data_size, void **con_cls)
- {
- MHD_get_connection_values(connection,MHD_HEADER_KIND,&print_out_key,NULL);//Analisis de la conexion web por terminal en servidor , no necesario
- //La pagina web en cuestion
- const char *page = "<html><body>Hola , navegador test de la libreria libmicrohttpd!</body></html>";
- //Crea la respuesta con nuestros datos anteriores , de la pagina
- struct MHD_Response *response;
- int ret;
- response =MHD_create_response_from_buffer (strlen (page), (void *) page,MHD_RESPMEM_PERSISTENT);
- //Finalmente, el paquete se destruye y se devuelve el valor de retorno de cola MHD YES o MHD NO in caso de ok o fallo
- //Cada respuesta HTTP se acompana del codigo de estado "OK" aqui
- ret = MHD_queue_response (connection, MHD_HTTP_OK, response);
- MHD_destroy_response (response);
- return ret;
- }
- /*******************************************************************************************************************************/
- int main (int argc, char *argv[]){
- //Arrancamos el demonio servidor actual que escucha en el puerto PORT
- struct MHD_Daemon *daemon;
- /*
- *1e.parametro es una de los tres modos de operacion , aquifunciona en un hilo, "thread" paralelo y gestiona todas las conexiones
- * de entrada en el msimo "thread"
- * Se permite la conexion a todos los clientes sin tener en cuenta su localizacion o nombre 3er y 4° parametro NULL
- * El parametro 5 &answer_to_connection es la direccion de la funcion que queremos arrancar
- */
- daemon = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY, PORT, NULL, NULL, &answer_to_connection, argc==1 ? NULL : argv[1], MHD_OPTION_END);
- if (NULL == daemon) {return 1;}
- (void) getchar ();
- MHD_stop_daemon (daemon);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement