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 81 82 83 84 85 86 87
| int main(int argc, char **argv)
{
fd_set lecture, ecriture, except;
struct sockaddr_un adr_dist_emit, adr_dist_rec;
int s_medemit, s_medrec, nbfds, nb_events,
stop=0, crash=0, res, TypeDErreur;
if((argc!=1)&&(argc!=2))
{printf("Usage : medium\n");
printf("ou medium <typederreur> \n");
exit(1);}
if(argc==1) TypeDErreur = 0; /* pas d'erreur */
else TypeDErreur = atoi(argv[1]);
/**
initialisation du generateur aleatoire !!
*/
srand48(time(0));
/* ----- creation et attachement des sockets --------------*/
/* ----- preparation de l'adresse de la socket distante -- */
s_medemit = GetAndBindSocket("s_medemit");
s_medrec = GetAndBindSocket("s_medrec");
adr_dist_emit = PrepareAdresse("sock_emit");
adr_dist_rec = PrepareAdresse("sock_rec");
/* ----- Preparation de select ----------------------------*/
if(s_medemit>s_medrec) nbfds = s_medemit + 1;
else nbfds = s_medrec + 1;
/* ----- Echanges de donnees ------------------------------*/
printf("Medium pret\n");
while((!stop)&&(!crash))
{
/*---- Preparation des ensembles -------- */
/*--------- de descripteurs ------------- */
FD_ZERO(&lecture);
FD_ZERO(&ecriture);
FD_ZERO(&except);
FD_SET(s_medemit, &lecture);
FD_SET(s_medrec , &lecture);
/*------- attente d'un evenment --------- */
nb_events = select (nbfds, &lecture, &ecriture,
&except, NULL);
if(nb_events==-1) {perror("select"); crash=1;}
/*------- le depouillement des votes ---- */
if(FD_ISSET(s_medemit, &lecture))
{
// res = Echange(s_medemit, s_medrec,
// adr_dist_rec, TypeDErreur);
if(res==0) stop=1;
else if(res<0) crash=1;
}
if(FD_ISSET(s_medrec, &lecture))
{
// res = Echange(s_medrec, s_medemit,
// adr_dist_emit, TypeDErreur);
if(res==0) stop=1;
else if(res<0) crash=1;
}
}
if(crash)
printf("Echange interrompu\n\n");
else if(stop)
printf("Echange termine. Deconnexion.\n\n");
close(s_medrec);
close(s_medemit);
remove("s_medemit");
remove("s_medrec");
return 0; |
Partager