Commit b82d369c1267780693e26afdc0f0fb25e4b1696a
1 parent
8d4694b6
feat: we can now handle the arrival of new clients using a poll; cant handle the disconnects though
Showing
3 changed files
with
40 additions
and
1 deletions
Show diff stats
server.c
... | ... | @@ -7,6 +7,7 @@ |
7 | 7 | #include <sys/un.h> |
8 | 8 | #include <netdb.h> |
9 | 9 | #include <netinet/tcp.h> |
10 | +#include <poll.h> | |
10 | 11 | #include "server.h" |
11 | 12 | |
12 | 13 | |
... | ... | @@ -103,3 +104,39 @@ int serv_gestionClient(int s){ |
103 | 104 | return 0; |
104 | 105 | } |
105 | 106 | |
107 | + | |
108 | + | |
109 | +int boucleServeur2(int ecoute) | |
110 | +{ | |
111 | + //initialisation tableau de socket | |
112 | + //int dialogue; | |
113 | + struct pollfd descripteurs[1024]; | |
114 | + descripteurs[0].fd=ecoute; | |
115 | + //initialiser POLLIN | |
116 | + for (int i=0;i<1024;i++) | |
117 | + { | |
118 | + descripteurs[i].events=POLLIN; | |
119 | + } | |
120 | + int LongueurPoll = 1; | |
121 | + | |
122 | + while(1){ | |
123 | + | |
124 | + //poll | |
125 | + | |
126 | + | |
127 | + //if (ecoute est active){ | |
128 | + /* Attente d'une connexion */ | |
129 | + int dialogue=accept(ecoute,NULL,NULL); | |
130 | + if(dialogue<0) return -1; | |
131 | + | |
132 | + //if longueurPoll <1024 //TODO A GERER | |
133 | + descripteurs[LongueurPoll].fd = dialogue; | |
134 | + LongueurPoll ++; | |
135 | + printf("Nouveau LongueurPoll : %i\n", LongueurPoll); | |
136 | + | |
137 | + /* Passage de la socket de dialogue a la fonction de traitement */ | |
138 | + //if(traitement(dialogue)<0){ shutdown(ecoute,SHUT_RDWR); return 0;} | |
139 | + //} | |
140 | + } | |
141 | + | |
142 | +} | ... | ... |
server.h
virtual_bridge.c
... | ... | @@ -31,7 +31,7 @@ if(argc!=2){ |
31 | 31 | // Initialisation du serveur |
32 | 32 | int socket = initialisationServeur(service,1024);//1024 est la taille de la file dattente de listen |
33 | 33 | // Traitement des connexions et des messages |
34 | - int ret = boucleServeur(socket, serv_gestionClient); | |
34 | + int ret = boucleServeur2(socket); | |
35 | 35 | |
36 | 36 | printf("Finish %i\n",ret); |
37 | 37 | ... | ... |