From 41c4a877553b1679613cb040c149f58567a6440f Mon Sep 17 00:00:00 2001 From: BQUINTAN Date: Tue, 14 Apr 2020 17:45:28 +0200 Subject: [PATCH] Modification TCP avec write --- .idea/.gitignore | 2 ++ .idea/ProgC.iml | 8 +++++ .idea/misc.xml | 6 ++++ .idea/modules.xml | 8 +++++ .idea/vcs.xml | 6 ++++ ProgC_Q.zip | Bin 16239 -> 0 bytes tsock.h | 86 +++++++++++++++++++++++----------------------- tsock_v3 | Bin 23048 -> 24320 bytes 8 files changed, 73 insertions(+), 43 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/ProgC.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml delete mode 100644 ProgC_Q.zip diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..81d39d3 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/ProgC.iml b/.idea/ProgC.iml new file mode 100644 index 0000000..633cf01 --- /dev/null +++ b/.idea/ProgC.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..ef004d1 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..5cb7f0e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9661ac7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ProgC_Q.zip b/ProgC_Q.zip deleted file mode 100644 index 1562e5bc1d6459f6d22f7f2a2f142f2dd8ffdf43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16239 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 V3ij8h1OKy8|5*p1=10 & n<100) + { + printf("[---%d",n); + } + if (n>=100 & n<1000) + { + printf("[--%d",n); + } + if (n>=1000 & n<10000) + { + printf("[--%d",n); + } + if (n>=10000 & n<100000) + { + printf("[-%d",n); + } + if (n>=100000 & n<1000000) + { + printf("[%d",n); + } + if (n>=1000000) + { + printf("Trop de messages à envoyer (n>1000000 \n"); + exit(1); + } +} //Construction des messages void construire_message(char *message, char motif, int lg ,int i) @@ -31,13 +66,11 @@ void construire_message(char *message, char motif, int lg ,int i) { char alphabet[] = "abcdefghijklmnopqrstuvwxyz"; if (i>26) - { - motif=alphabet[i%26-1]; - } + motif=alphabet[i%26-1]; + else - { - motif=alphabet[i-1]; - } + motif = alphabet[i - 1]; + for (int j=0;j=10 & n<100) - { - printf("[---%d",n); - } - if (n>=100 & n<1000) - { - printf("[--%d",n); - } - if (n>=1000 & n<10000) - { - printf("[--%d",n); - } - if (n>=10000 & n<100000) - { - printf("[-%d",n); - } - if (n>=100000 & n<1000000) - { - printf("[%d",n); - } - if (n>=1000000) - { - printf("Trop de messages à envoyer (n>1000000 \n"); - exit(1); - } -} + //---------------------------------------------------- //----------------Envoi UDP--------------------------- @@ -284,12 +284,12 @@ void ClientTCP (int port, int nb_message , int lg_msg , char* dest) construire_message(message,motif,lg_msg,i); -// printbuffer(i); + printbuffer(i); afficher_message(message,lg_msg); //Envoi du message - if ((envoi=sendto(sock,message,lg_msg,0,(struct sockaddr*)&addr_distant,lg_addr_distant))==-1) + if ((envoi=write(sock,message,lg_msg/*,0,(struct sockaddr*)&addr_distant,lg_addr_distant)*/))==-1) { printf("Echec de l'envoi du message (fonction send en défaut)\n"); exit(1); @@ -396,7 +396,7 @@ void ServeurTCP(int port , int nb_message, int lg_msg) printf("Echec de la lecture du message entrant \n"); exit(1); } -// printbuffer(i); + printbuffer(i); afficher_message(message, lg_recv); } //Fermeture connexion diff --git a/tsock_v3 b/tsock_v3 index fe680f6cdc3950711e080abc7a39676c8f1475d0..720f12d396292794ecdd5dea2ccb85c855d295ac 100644 GIT binary patch literal 24320 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