Micro http library written in c [UNIX]
- Copiare i file
libs/http-server/http_server.c
,libs/http-server/http_server.h
,libs/http-parser/http_parser.c
,libs/http-parser/http_parser.h
in una cartella ad esempiolibraries
. - Creare un file
main.c
dove includere le dipendenze (#include <http_server.h>
) - Compilare usando il comando
gcc -Ilibraries libraries/http_server.c libraries/http_parser.c main.c
- Enjoy
- La connessione viene sempre chiusa dopo che è stato eseguito l'handler della relativa richiesta
- Se l'url della richiesta viene spezzettato in più pacchetti tcp o la sua lunghezza supera
HTTP_MAX_HEADER_SIZE
allora viene inviato un messaggio di errore (probabilmente un 505) - È supportato solo il protocollo http/1.0 e http/1.1 senza tls
Alcuni esempi di callback si trovano nei file index.h
e index.c
.
#include <http_server.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int html_index_callback(int socket, void* data){
// make response
char buffer[] =
"HTTP/1.1 200 OK\r\n"
"Content-Type: text/html; charset=utf-8\r\n"
"Content-Length: 5\r\n"
"Connection: close\r\n"
"\r\n"
"INDEX";
// send response
send(socket, buffer, sizeof(buffer) - 1, 0);
return 0;
}
int main(){
struct HttpServer server;
if(http_server_init(&server, "127.0.0.1", 8080)) return -1;
if(http_server_add_handler(&server, HTTP_GET, "/", html_index_callback, NULL)) return -1;
if(http_server_start(&server)) return -1;
/* other jobs */
return http_server_join(&server);
}