Commit 19fd567447c5a6f01a56d7fd6c7e63199c244d34

Authored by achemin1
1 parent b82d369c

feat: receive messages from multiple client

Showing 1 changed file with 21 additions and 5 deletions   Show diff stats
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 #include <netinet/tcp.h> 9 #include <netinet/tcp.h>
10 #include <poll.h> 10 #include <poll.h>
11 #include "server.h" 11 #include "server.h"
12 - 12 +#include <unistd.h>
13 13
14 #define MAX_LIGNE 512 14 #define MAX_LIGNE 512
15 15
@@ -122,9 +122,11 @@ int boucleServeur2(int ecoute) @@ -122,9 +122,11 @@ int boucleServeur2(int ecoute)
122 while(1){ 122 while(1){
123 123
124 //poll 124 //poll
125 - 125 + int nb = poll(descripteurs, 1024, -1);
  126 +
  127 + if(nb<0){ perror("main.poll"); exit(EXIT_FAILURE); }
126 128
127 - //if (ecoute est active){ 129 + if( (descripteurs[0].revents&POLLIN) !=0){//ecoute est active
128 /* Attente d'une connexion */ 130 /* Attente d'une connexion */
129 int dialogue=accept(ecoute,NULL,NULL); 131 int dialogue=accept(ecoute,NULL,NULL);
130 if(dialogue<0) return -1; 132 if(dialogue<0) return -1;
@@ -136,7 +138,21 @@ int boucleServeur2(int ecoute) @@ -136,7 +138,21 @@ int boucleServeur2(int ecoute)
136 138
137 /* Passage de la socket de dialogue a la fonction de traitement */ 139 /* Passage de la socket de dialogue a la fonction de traitement */
138 //if(traitement(dialogue)<0){ shutdown(ecoute,SHUT_RDWR); return 0;} 140 //if(traitement(dialogue)<0){ shutdown(ecoute,SHUT_RDWR); return 0;}
139 - //} 141 + }
  142 +
  143 + for(int i = 0; i < LongueurPoll-1; i++){
  144 + if( (descripteurs[i+1].revents&POLLIN) !=0){ //A lire
  145 + //printf("Gestion Client %i \n", i+1);
  146 + FILE* f = fdopen(descripteurs[i+1].fd, "a+");
  147 +
  148 + char ligne[MAX_LIGNE];
  149 + fgets(ligne,MAX_LIGNE,f);
  150 + printf(">%i$ %s\n", i+1, ligne);
  151 +sleep(1);
  152 +
  153 + }
  154 + }
  155 +
140 } 156 }
141 - 157 +
142 } 158 }