V2 | à lanccer et vérififer que tout finctionne avec les pertes et les reprises de pertes. Faudra aussi rajouter des msgs de debug

This commit is contained in:
Newglear 2022-03-18 10:46:40 +01:00
parent f24472df74
commit 75b32735c4

View file

@ -1,5 +1,6 @@
#include <mictcp.h>
#include <api/mictcp_core.h>
#define TIMEOUT 5000
/*
* Permet de créer un socket entre lapplication et MIC-TCP
@ -7,6 +8,7 @@
*/
mic_tcp_sock sock;
mic_tcp_pdu pdu;
int PE,PA = 0;
int mic_tcp_socket(start_mode sm)
{
@ -52,6 +54,32 @@ int mic_tcp_accept(int socket, mic_tcp_sock_addr* addr)
int mic_tcp_connect(int socket, mic_tcp_sock_addr addr)
{
printf("[MIC-TCP] Appel de la fonction: "); printf(__FUNCTION__); printf("\n");
//Encpsulation SYN
/*
mic_tcp_pdu syn;
//syn.header.dest_port= ;
syn.header.seq_num = PE; // Création du header et setup PA et PE
syn.header.ack_num = PA;
syn.header.syn= 1;
syn.header.ack=0;
syn.header.fin=0;
syn.payload.data = ""; //Encapsulation du payload vide
syn.payload.size = 0;
if(IP_send(pdu,sock.addr)==-1){
printf("Erreur d'envoi de SYN");
exit(1);
}
if(IP_recv(&pdu,&sock.addr,TIMEOUT)==-1){
}
*/
sock.state=CONNECTED;
return 0;
}
@ -63,6 +91,7 @@ int mic_tcp_connect(int socket, mic_tcp_sock_addr addr)
int mic_tcp_send (int mic_sock, char* mesg, int mesg_size)
{
printf("[MIC-TCP] Appel de la fonction: "); printf(__FUNCTION__); printf("\n");
pdu.header.syn = 0;
pdu.header.ack = 0;
@ -71,8 +100,40 @@ int mic_tcp_send (int mic_sock, char* mesg, int mesg_size)
pdu.payload.data = mesg;
pdu.payload.size=mesg_size;
mic_tcp_pdu mem = pdu;
return IP_send(pdu,sock.addr);
if(IP_send(pdu,sock.addr)==-1){
printf("Erreur d'envoi du pdu");
exit(1);
}
PE = (PE +1) %2;
int test = (IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1);
while(test){
if(IP_send(pdu,sock.addr)==-1){
printf("Erreur d'envoi du pdu");
exit(1);
}
test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1);
}
if(pdu.header.ack_num==PE){
PE = (PE-1)%2;
if(IP_send(mem,sock.addr)==-1){
printf("Erreur d'envoi du pdu");
exit(1);
}
PE = (PE +1) %2;
test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1);
while(test){
if(IP_send(mem,sock.addr)==-1){
printf("Erreur d'envoi du pdu");
exit(1);
}
test=(IP_recv(&pdu,&sock.addr,TIMEOUT) ==-1);
}
}
return 0;
}
/*
@ -84,6 +145,7 @@ int mic_tcp_send (int mic_sock, char* mesg, int mesg_size)
int mic_tcp_recv (int socket, char* mesg, int max_mesg_size)
{
printf("[MIC-TCP] Appel de la fonction: "); printf(__FUNCTION__); printf("\n");
pdu.payload.data=mesg;
pdu.payload.size=max_mesg_size;
return app_buffer_get(pdu.payload);
@ -109,8 +171,20 @@ int mic_tcp_close (int socket)
*/
void process_received_PDU(mic_tcp_pdu pdu, mic_tcp_sock_addr addr)
{
mic_tcp_pdu ack;
printf("[MIC-TCP] Appel de la fonction: "); printf(__FUNCTION__); printf("\n");
return app_buffer_put(pdu.payload);
if(pdu.header.ack_num == PA){
PA= (PA+1) %2;
}
app_buffer_put(pdu.payload);
ack.header.ack=1;
ack.header.ack_num=PA;
if (IP_send(ack,addr)==-1)
{
printf("Erreur d'envoi du pdu");
exit(1);
}
}