-
Créer un mini serveur Web html en C
1) Installer le compilateur gcc
pkg install gcc13
2) Créer le serveur web
Modifier l'adresse IP du serveur, le port d'écoute, ainsi que le nombre de connexion maximal autorisé à la page web dans le code suivant :mkdir ~/SRV-WEB && cd ~/SRV-WEB
vi serveur.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 8000 #define MAX_CONNECTIONS 5 void serve_page(int client_socket) { FILE *html_file = fopen("index.html", "r"); if (html_file == NULL) { fprintf(stderr, "Erreur lors de l'ouverture du fichier HTML.\n"); exit(EXIT_FAILURE); } char response_buffer[1024]; char *status_line = "HTTP/1.1 200 OK\r\n"; char *content_type_line = "Content-Type: text/html\r\n\r\n"; send(client_socket, status_line, strlen(status_line), 0); send(client_socket, content_type_line, strlen(content_type_line), 0); while (fgets(response_buffer, 1024, html_file)) { send(client_socket, response_buffer, strlen(response_buffer), 0); } fclose(html_file); } int main() { int server_socket, client_socket; struct sockaddr_in server_addr, client_addr; socklen_t addr_len = sizeof(client_addr); // Create socket server_socket = socket(AF_INET, SOCK_STREAM, 0); if (server_socket == -1) { perror("Erreur lors de la création du socket"); exit(EXIT_FAILURE); } // Prepare the sockaddr_in structure server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("192.168.135.149"); server_addr.sin_port = htons(PORT); // Bind if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("Erreur lors de la liaison"); exit(EXIT_FAILURE); } // Listen listen(server_socket, MAX_CONNECTIONS); printf("Serveur démarré sur le port : %d\n", PORT); while (1) { // Accept connection from an incoming client client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &addr_len); if (client_socket < 0) { perror("Erreur lors de l'acceptation de la connexion"); exit(EXIT_FAILURE); } // Serve the page to the client serve_page(client_socket); // Close the connection close(client_socket); } return 0; }
3) Compiler le code
gcc -o serveur serveur.c -lsocket
4) Placer le fichier index.html du site web dans le même dossier (SRV-WEB) que le programme compilé (serveur)
6) Démarrer le serveur en arrière-plancd ~/SRV-WEB
nohup /serveur &
Tags : omnios, C, gcc, gcc13, web, serveur, index.html, HTML
-
Commentaires