• 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-plan

    cd ~/SRV-WEB
    nohup /serveur &

    Tags Tags : , , , , , , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :