code en C pour un mini serveur TCP qui écoute en permanence et affiche les messages envoyés par un client jusqu'à ce que le message "fin" soit envoyé

code en C pour un mini serveur TCP qui écoute en permanence et affiche les messages envoyés par un client jusqu'à ce que le message "fin" soit envoyé

par Abderrahmane DJELLAT,
Nombre de réponses : 1

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <unistd.h>


#define PORT 8080

#define MAX_MSG_SIZE 1024


int main() {

    int server_fd, new_socket, valread;

    struct sockaddr_in address;

    int opt = 1;

    int addrlen = sizeof(address);

    char buffer[MAX_MSG_SIZE] = {0};

   

    

    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {

        perror("socket failed");

        exit(EXIT_FAILURE);

    }

   

    

    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {

        perror("setsockopt");

        exit(EXIT_FAILURE);

    }

    address.sin_family = AF_INET;

    address.sin_addr.s_addr = INADDR_ANY;

    address.sin_port = htons(PORT);

   

    

    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0) {

        perror("bind failed");

        exit(EXIT_FAILURE);

    }

   

    

    if (listen(server_fd, 3) < 0) {

        perror("listen");

        exit(EXIT_FAILURE);

    }

   

    

    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0) {

        perror("accept");

        exit(EXIT_FAILURE);

    }

   

    

    while(1) {

        

        valread = read(new_socket, buffer, MAX_MSG_SIZE);

        if (valread <= 0) {

            perror("read");

            break;

        }

       

        

        printf("Client: %s\n", buffer);

       

        

        if (strcmp(buffer, "fin\n") == 0) {

            printf("Fin de la conversation.\n");

            break;

        }

       

        // Réinitialisation du tampon

        memset(buffer, 0, MAX_MSG_SIZE);

    }

   

    

    close(new_socket);

    close(server_fd);

    return 0;

}

En réponse à Abderrahmane DJELLAT

Re: code en C pour un mini serveur TCP qui écoute en permanence et affiche les messages envoyés par un client jusqu'à ce que le message "fin" soit envoyé

par KELTOUMA BOUACHRIA,