Pages : 1
#1 Le 02/12/2015, à 12:39
- Rabdou
problème select () soket
bonjour
je suis entrain d'écrire un programme utilisant des socket en c serveur 3 client, j'ai voulu utilisé la fonction select()
pour testé quel client envois un msg et récupéré le descripteur de se client puis le classé dans une file d'attente ;
puis traitement des msg selon l'ordre du client dans la file d'attente.
merci
Dernière modification par Rabdou (Le 02/12/2015, à 19:20)
Hors ligne
#2 Le 02/12/2015, à 18:50
- Rabdou
Re : problème select () soket
salut j'ajoute le code que j'ai écrie pour mieux m'aidé
// après conextion de 3 socket client au serveur respectivement : conect1, conect2, conect3, lft[] file d'attente.
// clear buffer soket
FD_ZERO(&readfds);
// ajouter nos descrepteur
FD_SET(conect1, &readfds);
FD_SET(conect2, &readfds);
FD_SET(conect3, &readfds);
for (n=1;n<4;n++)
{
memset(msg, 0, 255);
dt = select(conect3+1, &readfds, NULL, NULL, NULL);
if ((dt == -1) ||(dt == 0))
{
perror("select");
}
else {
// un client demande
if (FD_ISSET(conect1, &readfds))
{recv(conect1, &msg, strlen(msg), 0); FD_CLR(conect1,&readfds);
if (n==1) printf(" client: 1 %s lit les choix , les autre en attente\n",msg);
else {printf("'clien:1 attente \n");
ft[n-1]=1;}goto t ; }
if (FD_ISSET(conect2, &readfds))
{recv(conect2, &msg, strlen(msg), 0); FD_CLR(conect2,&readfds);
if (n==1) printf(" client: 2 %s lit les choix , les autre en attente\n",msg);
else {printf("clien:2 attente\n ");
ft[n-1]=2;}goto t;}
if (FD_ISSET(conect3, &readfds))
{recv(conect3, &msg, strlen(msg), 0);FD_CLR(conect3,&readfds);
if (n==1) printf(" client:3 %slit les choix , les autre en attente\n",msg);
else { printf("client:3 attente\n");
ft[n-1]=3;}goto t; }
t:scanf("%c",&et); }
}
normalement , le 1er tour me donne la 1ere socket client qui envois un msg la met dans ft[] puis le 2eme tour pour la 2eme , et le 3eme tour mm chose mais sa marche pas
Dernière modification par Rabdou (Le 02/12/2015, à 19:30)
Hors ligne
Pages : 1