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:
parent
f24472df74
commit
75b32735c4
1 changed files with 77 additions and 3 deletions
80
src/mictcp.c
80
src/mictcp.c
|
@ -1,5 +1,6 @@
|
|||
#include <mictcp.h>
|
||||
#include <api/mictcp_core.h>
|
||||
#define TIMEOUT 5000
|
||||
|
||||
/*
|
||||
* Permet de créer un socket entre l’application 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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue