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é

by Abderrahmane DJELLAT -
Number of replies: 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;

}

In reply to 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é

by KELTOUMA BOUACHRIA -