diff --git a/src/mictcp.c b/src/mictcp.c index fe91abf..4c48a88 100644 --- a/src/mictcp.c +++ b/src/mictcp.c @@ -3,7 +3,8 @@ #include #include -#define TIMEOUT 10 +#define TIMEOUT 100 +#define SIZE 1000 /* * Permet de créer un socket entre l’application et MIC-TCP @@ -13,10 +14,22 @@ mic_tcp_pdu pdu; int PE,PA = 0; float lostpdu = 0.0; - float lostrate = 0.0; + float lostrate = 15.0; float pduemis =0.0; - mic_tcp_pdu ack; + int fenetre[SIZE]; + void init (int* tab,int size){ + for(int i=0;i= lostrate && test){ - while(count < max && test){ - count++; - printf("Count: %d \n", count); - if((sent=IP_send(pdu,sock.addr))==-1){ - printf("Erreur d'envoi du pdu"); - exit(-1); - } - test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1); + PE = (PE +1) %2; + + pduemis++; + test = (IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1); + + if (test){ + lostpdu++; + printf("Lost Pdu : %f\n",lostpdu); } - if(count == max) - exit(-1); - count = 0; - while(pdu.header.ack_num!=PE){ - count++; - if(count == max){exit(-1);} - printf("Paquet message perdu \n"); - - if((sent=IP_send(pdu,sock.addr))==-1){ - printf("Erreur d'envoi du pdu"); - exit(1); - } - test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1); + printf("Lost rate= %f \n",(lostpdu/pduemis)*100.0); + + if((lostpdu/pduemis)*100.0 >= lostrate && test){ while(count < max && test){ + count++; + printf("Count: %d \n", count); + if((sent=IP_send(pdu,sock.addr))==-1){ + printf("Erreur d'envoi du pdu"); + exit(-1); + } + test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1); + } + if(count == max) + exit(-1); + count = 0; + while(pdu.header.ack_num!=PE){ count++; if(count == max){exit(-1);} - if(IP_send(mem,sock.addr)==-1){ + printf("Paquet message perdu \n"); + + if((sent=IP_send(pdu,sock.addr))==-1){ printf("Erreur d'envoi du pdu"); exit(1); } - test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1); - } - printf("Count : %d\n",count); - if(count == max) - exit(-1); - } + test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1); + while(count < max && test){ + count++; + if(count == max){exit(-1);} + if(IP_send(mem,sock.addr)==-1){ + printf("Erreur d'envoi du pdu"); + exit(1); + } + test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1); + } + printf("Count : %d\n",count); + if(count == max) + exit(-1); + } + } } + return sent; } @@ -271,6 +283,8 @@ void process_received_PDU(mic_tcp_pdu pdu, mic_tcp_sock_addr addr) printf("avant send\n"); ack.header.ack=1; ack.header.ack_num=PA; + ack.payload.data=""; + ack.payload.size=0; if (IP_send(ack,addr)==-1) { printf("Erreur d'envoi du pdu");