utilisation de select() pour faire un Tchat
Bonjour,
je suis entrain de faire un Tchat en TCP. Le serveur doit pouvoir accepter plusieurs connections de clients. Pour celà j'utilise la fonction select() mais je ne suis pas certain de savoir commet elle fonctionne ... il faut la mettre avant le accept() ? après ?
voici mon serveur, si vous pouviez m'éclairer ça seait sympa.
Code:
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include "fonc_socket.h"
int main(char * argv[], int argc)
{
int s_ecoute = createBindInetSocket(SOCK_STREAM,1234) ;
char c ;
struct sockaddr_in client;
struct hostent * h ;
int fd ;
int lg = sizeof(struct sockaddr_in) ;
if (listen(s_ecoute,10)<0)
{
perror("erreur listen") ;
return(-2) ;
}
else
{ printf("listen réussi \n") ;
//printf("Serveur lancé ! En attente de messages ...\n") ;
fd_set fdread ;
int ret ;
while(1)
{
FD_ZERO (&fdread) ;
FD_SET(s_ecoute, &fdread) ;
if ((ret=select(0,&fdread,NULL,NULL,NULL))==-1)
{
perror("erreur select") ;
exit(-2) ;
}
else
printf("select reussi\n") ;
if(FD_ISSET(s_ecoute, &fdread))
{
if ((fd=accept(s_ecoute, (struct sockaddr *)&client,&lg))==-1)
{
perror("erreur accept") ;
return(-1) ;
}
else
{
printf("accept reussi\n") ;
while(read(fd,&c,1)!=0)
write(1,&c,1) ;
}
}
}
}
close(s_ecoute) ;
return 0 ;
} |
Re: utilisation de select() pour faire un Tchat
Citation:
Envoyé par innosang
Code:
if ((ret=select(0,&fdread,NULL,NULL,NULL))==-1)
La valeur du premier paramètre de select() est incorrecte.