Bonjour à tous,

je rencontre un problème dans le while sur mon serveur : je n'arrive pas à spéficier qu'une fois la connexion établie avec un client, il faut lire une requête jusqu'à lire une chaîne contenant par exemple une ligne avec seulement un saut de ligne '\n', et de repondre par "au revoir", et fermer la connexion.

Voici un peu la tête du serveur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char**argv)
{
   int socket_serveur,socket_client,n;
   struct sockaddr_in servaddr,cliaddr;
   socklen_t clilen;
   char mesg[1000];
 
   socket_serveur=socket(AF_INET,SOCK_STREAM,0);
 
   bzero(&servaddr,sizeof(servaddr));
   servaddr.sin_family = AF_INET;
   servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
   servaddr.sin_port=htons(32000);
   bind(socket_serveur,(struct sockaddr *)&servaddr,sizeof(servaddr));
 
   listen(socket_serveur,1024);
 
   while(1)
   {
      clilen=sizeof(cliaddr);
      socket_client = accept(socket_serveur,(struct sockaddr *)&cliaddr,&clilen);     
      n = read(socket_client,mesg,1000,0,(struct sockaddr *)&cliaddr,&clilen);
      if(strcmp(mesg, "\n") == 0){
      	write(socket_client,"au revoir\n",10,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));
        shutdown(socket_serveur,2);
        close (socket_serveur);
        shutdown(socket_client,2);
        close(socket_client); 
	//exit(1);
      }  
      mesg[n] = 0;   
      printf("%s",mesg);  
   } 
}
Si vous avez une idée de la façon d'implémenter cela, merci.