#include <stdio.h> #include <stdlib.h> #include "reseau.h" #define SOURCE 42 #define DESTINATION 26 #define FEMISSION "flux2.dat" #define FRECEPTION "flux1.dat" int main(void) /* Programme principal */ { int AS,AD,numero,trame_attendue=0; char aux; ttampon TamponReception; ttrame Trame; fprintf(stderr,"Initialisation du protocole 4\n"); initialise_couche_physique(FEMISSION, FRECEPTION); initialise_couche_reseau(SOURCE, DESTINATION); while(1) { attendre(SIGRECU); prendre_de_la_couche_physique(&Trame); recuperer_donnees(Trame, &TamponReception,&numero, &AS, &AD); fprintf(stderr,"Trame %d recue : %s\n",numero,TamponReception.info); if (numero!=trame_attendue) fprintf(stderr,"Trame non attendue (%d) !\n",trame_attendue); else { envoyer_vers_couche_reseau(TamponReception, AS, AD); if ((rand() % 20)==0) { strcpy(TamponReception.info,"N"); fprintf(stderr,"Envoi de RNR !\nAppuyez sur entree pour continuer\n"); construire_trame(numero, AD, AS, TamponReception, &Trame); envoyer_vers_couche_physique(Trame); fflush(stdin); scanf("%c",&aux); } strcpy(TamponReception.info,"R"); construire_trame(numero, AD, AS, TamponReception, &Trame); fprintf(stderr,"Acquitement %d envoye\n",numero); envoyer_vers_couche_physique(Trame); trame_attendue=(trame_attendue+1)%MAXTAILLEFENETRE; } } }