From 5a7b204d24be16583351058bf40a301509b0bbcc Mon Sep 17 00:00:00 2001 From: aittaleb Date: Mon, 8 May 2023 08:41:17 +0100 Subject: [PATCH] version 2 avec reception ack asynchrone marche bien --- build/api/mictcp_core.o | Bin 22520 -> 22520 bytes build/client | Bin 55168 -> 55240 bytes build/gateway | Bin 68304 -> 68376 bytes build/mictcp.o | Bin 37008 -> 36616 bytes build/server | Bin 54064 -> 54144 bytes src/api/mictcp_core.c | 2 +- src/mictcp.c | 81 ++++++++++++++++++++++++---------------- 7 files changed, 49 insertions(+), 34 deletions(-) diff --git a/build/api/mictcp_core.o b/build/api/mictcp_core.o index 8cc5d68d0715bff471053dfef8203a16045e70d1..672b29079e8c4e19d3265f04bcad3fd1d06ac741 100644 GIT binary patch delta 16 Xcmeydp7F diff --git a/build/client b/build/client index 7e893f0cab1f5578cbeddf7d18d969e022cb5e5b..3d9d24e5fff4e61f7b5c58f2b08c0af4c8a84399 100755 GIT binary patch delta 14365 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

s?{49raF-C^J3;A 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 diff --git a/build/gateway b/build/gateway index 15782e3d1fe370cae2f755808db386fc6789956c..60453800243da4674cfb87f1eabde54489039f45 100755 GIT binary patch delta 17271 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 AkpKVy diff --git a/build/mictcp.o b/build/mictcp.o index e2f0c5b7123806699a0cccd178bfb2bd73579fd0..209c713c0a70651e1a8ddbf6b4e08bc904699b98 100644 GIT binary patch literal 36616 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 diff --git a/build/server b/build/server index 0b6dfa8c3eef936f2f76a7c75bcb415f8b622af0..fdf94178b00798253db5a08c0a1381c4e76c6272 100755 GIT binary patch delta 14139 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 TQ-TrP^=_$pteek!H}8J|HQsU7 diff --git a/src/api/mictcp_core.c b/src/api/mictcp_core.c index 604828d..33b5f96 100644 --- a/src/api/mictcp_core.c +++ b/src/api/mictcp_core.c @@ -14,7 +14,7 @@ int initialized = -1; int sys_socket; pthread_t listen_th; pthread_mutex_t lock; -unsigned short loss_rate = 20; +unsigned short loss_rate = 50; struct sockaddr_in remote_addr; /* This is for the buffer */ diff --git a/src/mictcp.c b/src/mictcp.c index 3598284..767902e 100644 --- a/src/mictcp.c +++ b/src/mictcp.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -28,6 +29,7 @@ typedef struct typedef struct { + int recpt; int socket; mic_tcp_pdu pdu_r; }arg_thread; @@ -39,7 +41,7 @@ static int socket_desc = 0; static enhanced_socket tab_sockets[NBR_SOCKETS]; int timeout = TIMEOUT_DEFAUT; int established = 0; -pthread_t attente_ack_tid; +pthread_t envoi_syn_ack_tid; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t end_accept_cond = PTHREAD_COND_INITIALIZER; char debug=1; @@ -263,30 +265,34 @@ int mic_tcp_send(int mic_sock, char *mesg, int mesg_size) display_mic_tcp_pdu(pdu, "creation du pdu data:"); display_mic_tcp_sock_addr(tab_sockets[mic_sock].dist_addr, "envoi du pdu data vers l'adresse :"); - + display_enhanced_socket(tab_sockets[mic_sock],"etat du socket"); int sent_size = IP_send(pdu, tab_sockets[mic_sock].dist_addr); printf("Packet envoye\n"); if (version<2) return sent_size; tab_sockets[mic_sock].socket.state = WAITING; - mic_tcp_pdu pdu_r; - mic_tcp_sock_addr addr_r; - pdu_r.payload.size = PAYLOAD_SIZE; + + pthread_t attente_ack_tid; + arg_thread* args = malloc(sizeof(arg_thread)); + while (1) { + args->recpt=-1; + printf("avant creation thread TAA\n"); + pthread_create(&attente_ack_tid, NULL,attente_ack,(void *)args); + printf("aprés creation thread TAA\n"); + sleep(timeout); - printf("%d\n",__LINE__); - if (IP_recv(&pdu_r,&addr_r, 0) == -1){ - printf("%d\n",__LINE__); + if (pthread_cancel(attente_ack_tid)) printf("destruction du TAA"); + + if (args->recpt == -1){ sent_size = IP_send(pdu, tab_sockets[mic_sock].dist_addr); - printf("%d\n",__LINE__); printf("Pas de pdu recu, envoi d'un doublon\n"); continue; } - printf("%d\n",__LINE__); - display_mic_tcp_pdu(pdu_r,"pdu reçu :"); + display_mic_tcp_pdu(args->pdu_r,"pdu reçu :"); - if (pdu_r.header.ack == 1 && (tab_sockets[mic_sock].NoSeqLoc == pdu_r.header.ack_num)){ + if (args->pdu_r.header.ack == 1 && (tab_sockets[mic_sock].NoSeqLoc ==args->pdu_r.header.ack_num)){ printf("le bon Ack a été reçu\n"); tab_sockets[mic_sock].socket.state = ESTABLISHED; @@ -294,7 +300,7 @@ int mic_tcp_send(int mic_sock, char *mesg, int mesg_size) display_enhanced_socket(tab_sockets[mic_sock], "État du socket aprés la reception du ack"); return sent_size; - }else if(pdu_r.header.ack == 1 && pdu_r.header.syn == 1){ + }else if(args->pdu_r.header.ack == 1 && args->pdu_r.header.syn == 1){ printf("PDU SYN ACK recu a nouveau (Doublon) \n"); mic_tcp_pdu pdu_d; @@ -303,7 +309,7 @@ int mic_tcp_send(int mic_sock, char *mesg, int mesg_size) tab_sockets[mic_sock].socket.addr.port, tab_sockets[mic_sock].dist_addr.port, -1, - pdu_r.header.seq_num, + args->pdu_r.header.seq_num, 0,1,0, NULL,0 ); @@ -391,7 +397,7 @@ void process_syn_pdu(mic_tcp_pdu pdu,mic_tcp_sock_addr addr, int mic_sock){ args->pdu_r=pdu_r; printf("avant creation thread TESA\n"); - pthread_create(&attente_ack_tid, NULL,attente_ack,(void *)args); + pthread_create(&envoi_syn_ack_tid, NULL,attente_ack,(void *)args); printf("aprés creation thread TESA\n"); @@ -605,29 +611,38 @@ void display_mic_tcp_sock_addr(mic_tcp_sock_addr addr, char* prefix) { } - void * attente_ack(void * arg) { - printf(debug?"début du TESA : thread d'envoi de SYN ACK'\n":""); + printf(debug?"début du TAA: thread d'attente de ACK'\n":""); arg_thread* args = (arg_thread*)arg; - while (1) - { - if (tab_sockets[args->socket].socket.state == SYN_RECEIVED) - { + - display_mic_tcp_pdu(args->pdu_r, "renvoi du pdu syn ack"); - display_mic_tcp_sock_addr(tab_sockets[args->socket].dist_addr,"a l'adresse"); - IP_send(args->pdu_r, tab_sockets[args->socket].dist_addr); - printf(debug?"TESA: je renvoie le Syn ack\n":""); - } - else if (tab_sockets[args->socket].socket.state == ESTABLISHED) - { - printf("!Destruction du TESA!"); - pthread_exit(NULL); - } - sleep(timeout); - } + args->recpt=IP_recv(&args->pdu_r,NULL, 0) ; + printf("TAA: reception effectuee, autodestruction entamee\n"); + pthread_exit(NULL); } +// void * attente_ack(void * arg) { +// printf(debug?"début du TESA : thread d'envoi de SYN ACK'\n":""); +// arg_thread* args = (arg_thread*)arg; +// while (1) +// { +// if (tab_sockets[args->socket].socket.state == SYN_RECEIVED) +// { + +// display_mic_tcp_pdu(args->pdu_r, "renvoi du pdu syn ack"); +// display_mic_tcp_sock_addr(tab_sockets[args->socket].dist_addr,"a l'adresse"); +// IP_send(args->pdu_r, tab_sockets[args->socket].dist_addr); +// printf(debug?"TESA: je renvoie le Syn ack\n":""); +// } +// else if (tab_sockets[args->socket].socket.state == ESTABLISHED) +// { +// printf("!Destruction du TESA!"); +// pthread_exit(NULL); +// } +// sleep(timeout); +// } +// } + void error(char * message, int line){ printf("%s at line %d\n",message,line); exit(1);