From 7d67fbbc227eccc96b55b1fd26febbe65babdb8c Mon Sep 17 00:00:00 2001
From: 20050114 <20050114@studenti.uniupo.it>
Date: Fri, 17 May 2024 11:11:16 +0200
Subject: [PATCH] to end

---
 .../Laboratorio/Assigment4/EchoServer2/client | Bin 0 -> 17376 bytes
 .../Assigment4/EchoServer2/client.c           |  13 +-
 .../Laboratorio/Assigment4/EchoServer2/server | Bin 0 -> 17464 bytes
 .../Assigment4/EchoServer2/server.c           |  43 +++---
 .../Laboratorio/Assigment4/EchoServer3/client | Bin 0 -> 17456 bytes
 .../Assigment4/EchoServer3/client.c           |  97 +++++++++++++
 .../Assigment4/EchoServer3/makefile           |  10 ++
 .../Laboratorio/Assigment4/EchoServer3/server | Bin 0 -> 17504 bytes
 .../Assigment4/EchoServer3/server.c           | 137 ++++++++++++++++++
 9 files changed, 270 insertions(+), 30 deletions(-)
 create mode 100755 Reti/Laboratorio/Assigment4/EchoServer2/client
 create mode 100755 Reti/Laboratorio/Assigment4/EchoServer2/server
 create mode 100755 Reti/Laboratorio/Assigment4/EchoServer3/client
 create mode 100644 Reti/Laboratorio/Assigment4/EchoServer3/client.c
 create mode 100644 Reti/Laboratorio/Assigment4/EchoServer3/makefile
 create mode 100755 Reti/Laboratorio/Assigment4/EchoServer3/server
 create mode 100644 Reti/Laboratorio/Assigment4/EchoServer3/server.c

diff --git a/Reti/Laboratorio/Assigment4/EchoServer2/client b/Reti/Laboratorio/Assigment4/EchoServer2/client
new file mode 100755
index 0000000000000000000000000000000000000000..4ef6f9f2c3fa9db243efc58a0a4a42242280e5bf
GIT binary patch
literal 17376
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
KyC=Y-vi|~d6aMi4

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Assigment4/EchoServer2/client.c b/Reti/Laboratorio/Assigment4/EchoServer2/client.c
index 98b1655..6dc11ad 100644
--- a/Reti/Laboratorio/Assigment4/EchoServer2/client.c
+++ b/Reti/Laboratorio/Assigment4/EchoServer2/client.c
@@ -13,10 +13,8 @@ int main(int argc, char *argv[])
     char valueToReceive[256] = {'\0'};
     char iterationsServer[256] = {'\0'};
 
-    int iterations;
     printf("Inserire il numero di iterazioni: ");
-    scanf("%d", &iterations);
-    snprintf(iterationsServer, sizeof(iterationsServer), "%d", iterations);
+    scanf("%s", iterationsServer);
 
     int simpleSocket = 0;
     int simplePort = 0;
@@ -71,22 +69,17 @@ int main(int argc, char *argv[])
     }
 
     // Inviando il numero di iterazioni al server
-    write(simpleSocket, iterationsServer, strlen(valueToSend));
+    write(simpleSocket, iterationsServer, strlen(iterationsServer));
 
+    int iterations = atoi(iterationsServer);
     for (int i = 0; i < iterations; ++i)
     {
-
-        /* get the message from the server   */
-        // returnStatus = read(simpleSocket, buffer, sizeof(buffer));
-
         printf("Inserire il valore da voler inviare al server: ");
         scanf("%s", valueToSend);
         write(simpleSocket, valueToSend, strlen(valueToSend));
         read(simpleSocket, valueToReceive, sizeof(valueToReceive));
         printf("\n\nEcho: %s\n", valueToReceive);
-        close(simpleSocket);
     }
-
     close(simpleSocket);
     return 0;
 }
diff --git a/Reti/Laboratorio/Assigment4/EchoServer2/server b/Reti/Laboratorio/Assigment4/EchoServer2/server
new file mode 100755
index 0000000000000000000000000000000000000000..fbdcc586ba39dad4c81beaa803884620db73656a
GIT binary patch
literal 17464
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
I@QCa`0FHAcOaK4?

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Assigment4/EchoServer2/server.c b/Reti/Laboratorio/Assigment4/EchoServer2/server.c
index 1da1658..15374b0 100644
--- a/Reti/Laboratorio/Assigment4/EchoServer2/server.c
+++ b/Reti/Laboratorio/Assigment4/EchoServer2/server.c
@@ -88,32 +88,35 @@ int main(int argc, char *argv[])
     int clientNameLength = sizeof(clientName);
 
     /* wait here */
+    while(1){
+        simpleChildSocket =
+            accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength);
 
-    simpleChildSocket =
-        accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength);
-
-    if (simpleChildSocket == -1)
-    {
-        fprintf(stderr, "Cannot accept connections!\n");
-        close(simpleSocket);
-        exit(1);
-    }
-
-    char bufferRead[256] = {'\0'};
-    read(simpleChildSocket, bufferRead, sizeof(bufferRead));
+        if (simpleChildSocket == -1)
+        {
+            fprintf(stderr, "Cannot accept connections!\n");
+            close(simpleSocket);
+            exit(1);
+        }
 
-    while (1)
-    {
-        // Read message from client
+        char bufferRead[256] = {'\0'};
         read(simpleChildSocket, bufferRead, sizeof(bufferRead));
         printf("Received: %s\n", bufferRead);
-        char valueToSend[256] = {'\0'};
-        snprintf(valueToSend, sizeof(valueToSend), "%s", bufferRead);
-        write(simpleChildSocket, valueToSend, sizeof(valueToSend));
+        int iterations = atoi(bufferRead);
 
-        close(simpleChildSocket);
-    }
 
+        for (int i = 0; i < iterations; ++i)
+        {
+            char bufferRead[256] = {'\0'};
+            // Read message from client
+            read(simpleChildSocket, bufferRead, sizeof(bufferRead));
+            printf("Received: %s\n", bufferRead);
+            char valueToSend[256] = {'\0'};
+            snprintf(valueToSend, sizeof(valueToSend), "%s", bufferRead);
+            write(simpleChildSocket, valueToSend, sizeof(valueToSend));
+        }
+        close(simpleChildSocket);
+        }
     close(simpleSocket);
     return 0;
 }
diff --git a/Reti/Laboratorio/Assigment4/EchoServer3/client b/Reti/Laboratorio/Assigment4/EchoServer3/client
new file mode 100755
index 0000000000000000000000000000000000000000..00c3da4cc31d46c2b704caf8973f7f2349388806
GIT binary patch
literal 17456
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

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Assigment4/EchoServer3/client.c b/Reti/Laboratorio/Assigment4/EchoServer3/client.c
new file mode 100644
index 0000000..62c5706
--- /dev/null
+++ b/Reti/Laboratorio/Assigment4/EchoServer3/client.c
@@ -0,0 +1,97 @@
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+void clean_buffer(void* buffer, size_t buffer_size){ 
+    char* bufferChar = (char *) buffer;
+    for(size_t i = 0; i < buffer_size; ++i){
+        bufferChar[i] = '\0';
+    }
+}
+
+int main(int argc, char *argv[])
+{
+    char valueToSend[256] = {'\0'};
+    char valueToReceive[256] = {'\0'};
+    char iterationsServer[256] = {'\0'};
+
+    printf("Inserire il numero di iterazioni: ");
+    scanf("%s", iterationsServer);
+
+    int simpleSocket = 0;
+    int simplePort = 0;
+    int returnStatus = 0;
+    char buffer[256] = "";
+    struct sockaddr_in simpleServer;
+
+    if (argc != 3)
+    {
+        fprintf(stderr, "Usage: %s <server> <port>\n", argv[0]);
+        exit(1);
+    }
+
+    /* create a streaming socket      */
+    simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+
+    if (simpleSocket == -1)
+    {
+        fprintf(stderr, "Could not create a socket!\n");
+        exit(1);
+    }
+    else
+    {
+        fprintf(stderr, "Socket created!\n");
+    }
+
+    /* retrieve the port number for connecting */
+    simplePort = atoi(argv[2]);
+
+    /* setup the address structure */
+    /* use the IP address sent as an argument for the server address  */
+    // bzero(&simpleServer, sizeof(simpleServer));
+    memset(&simpleServer, '\0', sizeof(simpleServer));
+    simpleServer.sin_family = AF_INET;
+    // inet_addr(argv[2], &simpleServer.sin_addr.s_addr);
+    simpleServer.sin_addr.s_addr = inet_addr(argv[1]);
+    simpleServer.sin_port = htons(simplePort);
+
+    /*  connect to the address and port with our socket  */
+    returnStatus = connect(simpleSocket, (struct sockaddr *)&simpleServer,
+                           sizeof(simpleServer));
+
+    if (returnStatus == 0)
+    {
+        fprintf(stderr, "Connect successful!\n");
+    }
+    else
+    {
+        fprintf(stderr, "Could not connect to address!\n");
+        close(simpleSocket);
+        exit(1);
+    }
+
+    // Inviando il numero di iterazioni al server
+    write(simpleSocket, iterationsServer, strlen(iterationsServer));
+
+    // Aspettando l'ACK
+    read(simpleSocket, valueToReceive, sizeof(valueToReceive));
+    printf("%s\n", valueToReceive);
+
+    int iterations = atoi(iterationsServer);
+    for (int i = 0; i < iterations; ++i)
+    {
+        clean_buffer((void *) valueToReceive, sizeof(valueToReceive));
+        printf("Inserire il valore da voler inviare al server: ");
+        scanf("%s", valueToSend);
+        write(simpleSocket, valueToSend, strlen(valueToSend));
+        read(simpleSocket, valueToReceive, sizeof(valueToReceive));
+        printf("\nEcho: %s\n", valueToReceive);
+    }
+    close(simpleSocket);
+    return 0;
+}
diff --git a/Reti/Laboratorio/Assigment4/EchoServer3/makefile b/Reti/Laboratorio/Assigment4/EchoServer3/makefile
new file mode 100644
index 0000000..f0ddf27
--- /dev/null
+++ b/Reti/Laboratorio/Assigment4/EchoServer3/makefile
@@ -0,0 +1,10 @@
+all: client server
+
+client: client.c
+	gcc client.c -o client
+
+server: server.c
+	gcc server.c -o server
+
+clean:
+	rm -f client server
diff --git a/Reti/Laboratorio/Assigment4/EchoServer3/server b/Reti/Laboratorio/Assigment4/EchoServer3/server
new file mode 100755
index 0000000000000000000000000000000000000000..c74259722a9539a0f3d04948bf995c13e76a3e20
GIT binary patch
literal 17504
zcmeHPeQ+DcbzhMBpuRxJmTX#Xtg~XZlx#wzBFU5$*#N(EtSOt8#fBMM20`LTVoCxG
zaIh)IR;jY|2ty-b(ow5U+Zno(rs~v5)tP9@sFp)jv8kkPLU}TcQacIz;TEu6nTF+*
zb}ggt?e4q1I|5B7(?8lNR|CG^`@Q#e_jYghZtrgO8_jJkWgZWsRL<^Ys7>A=n1D1)
zep&($0ank}!Qaj7HnsxvWt<cCfDm96=}MVXR!F`aB*s-CC?bDJ(2OM25GBTyN>!_c
zg(UL{9pjcGl)76QUg1ZQ>{fZ2urrtJm&Zra9*1pHT_fVE_d8`)##PAUr#PfBu3pB~
z%Q%wrSRqIxsXehx@K-PMb4v|um^A*EF?U?2jC0E-=}!{N!1VANX5<$suU*Dn(|9(_
zE!zamNK$zZK^(Tre>YJ#ACl#j>Ie7vDVvw=7>IW7*|lRJQZo>ZrG{&U>-W^`+2v2h
z{X2OTuwGaOo>K=N=wQ%q)5uYGBHkc%wEyJFmf!Y0wD<Io@9Mw2b@QkGbmOW0pQk*q
zO!UEo@$%H*I^rt$p$|WP&vE3-kh=wbmyPcY?#++WFhQFmeFZel!3gC65ORn+te+^s
zca`A3Sc1Q~1i!lk|Jf3Jumt~f3I3BM_)rOc8h8zU?z9bvV(sHE!Q=E;%)hS$f4BsX
zc@)d%U<v;Fz-#bxr#pZsmd~0Jd<^(4?o2>$f!}(ziD?00q<MqE_~^mmu!kk%J-=?4
z%ovWEtlx~s2Ke73OD4jx2s5LD1~?~8BgO`e!6bNgM}bcm;Rs8b5hIacy-y^froqBy
zJj!|o;z@(`4ke;7vzLW?dW<2Hg+e{U;ZSch79NN`X@H8QhmvMEVTK07(HKj{WWa&8
z)`rH=PXA8-ZWd}id@uwB7=2iL;_$)7fq2X~9PS>#EcyoHF_}e3xE6Kfhg}9^a`8VL
zsrG+L$MK5))a53%DY^>nr$jR{x*kw_j@&2=wQ{~EJ|OvufUpx!`jz_xk8=Z-M`_N+
z%S$3RWo`UAat1kX<2Ty)1sjiZ4kbDtaQ?%2h*CiMuLJ_;E=szMr#TXB?KU3gLrR@C
zo?o}6q07eGuLu1$9?PaQWaFvr&^B!2p<}ExV&ieFP&#4b*AfYG!p6&62yQ)P<120c
zlQy2NQD{DG<Ja5#&)9hTc%HKH@)Y4w(>5NjKa?)n_?w6XIcwu_&R$AOEwI!AOD(X}
z0{=f+;JwP*KGa9wuF%Jq|7Zte`q;EtR+!aCzg=;WH$Y+cYM}Flt!qG3Zf5A;kCuGy
z9}0!S1lRG#BcHo$>3HGK=Pp<}Uhwm|zp!+?(C2f{Svp?e^SLisI$qfGx#O0O7xaAY
zbC!-5@_a6A>39Lp=N__jyy3~`f|iaK@_eq&((wYG&)sh6cq5e0t+#Z%kmqwAOUDa%
zKKJg&bi8=shU2$%ykNueTRL8-;rL01*2}=Up>lH*<Lw9fOR&7R>*rniS(pAbm;T2t
z{SRIGNtd2+>0>VaX_uaI>4PraaOp=}dWTCt=+c{A`hJ(b+pgFBTWk9AV|w}@_0fNx
zZ$I3YS^hiFqk3lDW-j(GgY&Pj@dgOFHlb(s?**V|mhVKdcfs5Ur}ovm#HqciFju*G
z1bT;EloI?`asS<AD7Jm9r|0zxSMSp=ER^e>m-WjZn;Rg5mt+PNg}GkdZxoN`|H%Fy
zgPEo7?9fN|{}Dnx{f4<#AK(8~P_iFfFBGy7IGJ8vein4k5s0<Q$N1b6U_{UXaeDgc
zte#HI>Eq2Hn-}z%=6S5}TQ}<C9SgwD>z>({p@`Auc@J0jHP0pfX=38YMJtQrZ+F2E
zOP_!KKMDmseRdK=L?2(awVGG0d7*B4W^5Wr%y(vN%0l0kXp~2?W2*!xJGMg~AH!Vq
zaUV2B_D(21v->;P`stY|%q9B`ILL3|Jdj-tr~Nq`!7rlvEu0IozYJWO7dd(!3ofL#
zLq3z3Px`{STge$Z;~B^_`$H?U^MJtfap{Qzk7o;>!|3@nu**uO9-~T*PQ!GDRm;Y}
zoaP63{5&3J<*zVyY^}g^FeHz~AoE*f=38x<*I?%DRyFn@0yE3L{t@IjlRXO}8vs`C
znbo7OzV`cH3hEc$)Y6wPe6Z^Gwp~ttH~Q-LVb<C<oBr#}Z~CBAQ42jYHVf4_$BzT^
z!%FUjyn1K2p^S-AZo*Q=egLlHy!MrUISq~&+M6DG6@;G2pf=9ilxL@>zXvWycp&!U
z=y~3osU|qWySFnoei9o1x@{O{N2}YeTbaCwlQ874#+5@MHT2fqkjH!QM8w@$t&mlA
zI|PV&K=jj)pEwQ5frhXbWEidysptF{_MTNTgtb^<uK?0##^ylq_L&*WN;ori$wJ=%
zgl(v2P9lWXzyMJT(GU^P(>!AIJjNALco6;~2XPLr9$CW*huTbiNC$B*&`_Is5VAH4
z3NkoC$yO-nQ?N=wO~GmfYZa_lFrc8WV7r2y3U(>jui%h^!wQZlctXJm1y3nBso-e^
z&nP&h;Ix956r5G?ih^?rW(j68*uLYuv(Di|4AFxPA7IDww%5}y!+@`W%f6Uwez;&W
z&16r2XL?MYIrEh5%-Dj042CN8m4ZG6s}$4}tX8mA!FmO83Xu8g3gW~e*-iz!6zo@U
zNWozRM-)7v;Dmyw6r5D>w1Q_8oKkRF!AlCxDtJY~IR&!>p+BHe^~}bv!wmnT=qz~!
zIP~vm$e?{uU#<Y#%-9QZ?Bp8YhER4b<&phJ_9=v0ToySPepEVise%lyDb%G3`V_2E
zP*bp4!CD3D6$~h-E7-1Jr-EGy_A5A~;IM)t3Z77KLcvoCPAYg>!7~a@DLAd*B?V^{
zyrSTof?0ylWzeXLy6ocnVvK=J48O0#Erl3<ooIq?p&X!F6l5^hQnx7RQ?N=wO~Gmf
zYZa_lFrc8WV7r2y3U(>jui%h^!xn5F5tVH|A?1XWr=*;e^0bs^q~uKjH)qpQza-_X
zlvkvjlQPR?<|H;Yp8L>ZdipYqq<$C-bjFMJt+<9R8FX3HEib$Wmv%mqJmXyK;}c)y
zv(H=O4z6H71Fzgq7vy>+_?foM{(YMn3;tSb`tO1rt?BoJhlA;lI`mA<T|htFw(UBu
z0kiMC3k6@eUT$u#drjUSx25xK>8nlYe+?Ek{8S&k=+XE7IQ1s34<9)ad^C6@_*gJ>
zvA5S>x%s#70QvgnqLh4HX{{u=dFjvpvKH{jr}Q1kaG!CHwl%4JdMKVS?_JFr<Eep&
z7K@u&54@`}4K1vRH$AtnW)JgMKGF~Yg0(}CHkeA9TDPG^V;a2s=`*xP>S`g~rPb{O
zabz`XfHyx{PkeA_z%Y%77LRFIn6?$OQ03wKA<c|y;YcK5B$H?h$FL&eH4=tdHIWwa
zo(Qsz#f%;^8joSrA*08LK5j(tuvW8R<Na)F5}V(1YxzDMWCi^0dZ$o$3gp0iq3{)u
zPl0>^<nu5TA|OxZ3xywmyaMtX$hTpbZGd}}M`0L03X-0&d!9VRJi|WEt!r0SOh_JI
z$_5}Gcyhv6(@MNyWp}`D7yM3NEffOa$GpB4Z`H3>u6d$jgx$C4p6#EyV+*i6-$y}C
zL;ZLll8~@G6Mj>`*J8X(Sk|-f`zDmvh+MPR_e@#ix)o1Cg+N97^YD8e>^DMxS$2S!
zn&9^e{BTuaAkpIWeX*?7TlIzVX0Mi6*6gi*c6pPx_L&vBw|;cx0dFAYtq*!@gWl=}
zuh!tLYVi6RycPVNIJOVoC*z7@DJ`|YQVT4#z)}k=wZKvfEVaN=3oNz3|HT%d@3ZK8
zEV}h3xt0z}-mI^adgpBd&^J=_-50*|z=Zeam^KN)==(3cU&loD_dhPgQJ;jT1(@jG
zx*p%OK$3!8l6Jhs$CML-!TSuJs-(1k<AszAW7YQw2l{sFk~~0K=isYYO!Tc#yR0Db
z!xB)v`C}09hllJuQTei2tmA{_0zW<|j)%gt53YC0{NRBN*?B&&Oyl|%X@^I^T&LrZ
z#r=;7`u^ITVXf@%fRyc0c1bxT<%pCMQcg;FM#^a^XQiBza$ZXK2$LtDl$w;aQU;`K
zm(pF&pQl#@gvWu##(T8tj_y><Olf=lyZp5^bt$gZ9ot#!uifRZ+a~y*mm{829_#yl
zyLUM}bD;0joqRc?@6Vn5GWJxFjxC2#K;yybzrq>^PJSh$@#5qw7@bE>eifth&&jW5
zbe=o;HH^lClZV-X`q5@6hg}p}QQphCiu7YSt7Jn(d7rgk!<Id?|9VFAkCTTF6f`>{
za5=lt`X1kIEr+KLf!pm2`ERtoW3^k$*-h3w=Hzc?#l}%NeBn;>j?*7z&48T|xZL(V
zvfWzFXjWA$PG8H|yZn)~Vj08vx(qsH*8Wi?aQNv5^3W8Hgolqj&HrS)8-NGuQymZt
zmWQbYex4%jFbF*6GvdnsDED97o~M8>R{v7R^&HP<1B>vdNTAqKv3&lV+cz%iuW8^t
zFw499>pRk)u47z<Kd*DJ`22YXc$fti^=}7UV9Kx;T<8CCIItUlY?l`Zy3TC`UgKpr
z|6Jw#;`8KhAb(fa^1wRq_rVv-zJN2IO5krOTRdLsk$1Xs?ZXoM{U!J?=Y1?K`@K=-
z87tv`yaa!;1b?~&f35`oqZ0hvz+?Nk$K3}d{Jqf5T9Nko1n}$2Zees?A(!pQV~fh5
zWzw)0_+ssRKj(dH4mYMi;?E{QK2pN}ufXPm@mL!GU`u&ke>G3;khVDFgZ{pN%^Be5
zWx21&{^HL}fgdSR?w3pOUoF8;mEgZyg8vEd*q-isz6reMtUA}0!S!-W5&rLaJ1jP6
z;9qQ?$1dQD^$Y7sm`O7QZ+?21+F}th2Sc!dBW5IFgGD4B>Kll6hX+CtGoDC>!l_|q
zJ^T09*Y2q+?u7e1qM>ji5k49+VrJqf>rI3QjZh>tICvC7Y+49BO^0jJNIY&Npi-ew
z%c0=G=1}tkO(EFd;q;8KP}6502p(*0bXxe15};r=R;XE*Ip|G?Sm;38gAKv9(1R^4
z4>unU9S%0MHDj)PA4*R$#q0cEZ#Xd`VKXeY#smWPZ7Q^P#mV*z7~xo`8(P>%h;21a
zyVy(P<oMnhCxzQ=oXn!lGfp$#wd16qE1~LQuMF+XaeFv-(}W_)c&Hz?|KLuW)(0Up
z5{-pYNki-hatB+jh}|hS3%Px|lSx?vzTpSo5jkDND<BsKJBpkP?ox6xV)K!c3x!~_
z5S==>i>T<<Am^?mXAWX#lZ)eT&72(bCyx%A;ck#-LdbqXumj3S3^6~v`ZD}|v6O!(
z5g#%V=208for=O9#b`uQ!G_ivGu+3xdw)3D&-{_2F(^VvGa)Q6M3V55%%Oz9mM{jw
z7$DKmfXV#4Py7J=eQ{6`B#j>CH;rLXajb%OoS)o&qhF5B{s`non#e;8QxQQJiV6=#
zAu|yUea!qYMGV5QUpz(qLJZy!!juR18X{G}e1?f6t+NFyd<mocB>ZrRN%6F9A*q4Q
zo@m`m+#Ue-_)b|qNqiq@Pjo#bt`&eip4LGmHFA{F9se2Ne+Fw~sz0rlNLI@@dVb)p
ze;Dle?119w`2xuyX}~&SJ5xNZ^P|AwAyYi9zewi5W>1)hJ$()oT>Dczt<y;ElFn3r
z@*{Z+?D#B!bXw1m)MUK7{*q=H0NAD!PwPIC^n8QLcOU=n%J>GEA*~Nd((@IJ$2N1v
zKL;GP3FQwrD<VnhUh%m5{|{X8nv5eEa5cCqd-f-;cv_c|B!5{eclFpAS3Ip>N!s6G
zV;+<r$#1&iC*{ou$+Pre3xgq1oY3I=V*vK{qxCRJdQM0F?)H00##8?@O?pcCu2e}-
z|B?Q;0I+<DzorQb$u^-{f8FK31{Qlft;0!HqtTY!<-Y+oT+_;F$6Bw`et5S(=_K*^
zDsA!fe6qF%NJ!)-G^G=N9SnHxQu(x=r2pT5{vQJzf0!ta`ti?z!$YKadQMO+Z{TVC
zVJs$!C%FQG?eQ$Y-59GClFE^+6;JwF2*$jqd@Ud>z7p}8Fk64u%krhW#Z&y979#-G
z6_Z`kxg#v%Z$M_aAR7*sNAN+rRezd)R{=+L7m?y`eZ7#n%Sh#tFFtN^xp33SKH;&+
J72s0Ye**ahEouM&

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Assigment4/EchoServer3/server.c b/Reti/Laboratorio/Assigment4/EchoServer3/server.c
new file mode 100644
index 0000000..a843b51
--- /dev/null
+++ b/Reti/Laboratorio/Assigment4/EchoServer3/server.c
@@ -0,0 +1,137 @@
+#include <netdb.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+// const char MESSAGE[] = "Guess who's back!\n";
+
+void clean_buffer(void* buffer, size_t buffer_size){ 
+    char* bufferChar = (char *) buffer;
+    for(size_t i = 0; i < buffer_size; ++i){
+        bufferChar[i] = '\0';
+    }
+}
+
+int main(int argc, char *argv[])
+{
+    int simpleSocket = 0;
+    int simplePort = 0;
+    int returnStatus = 0;
+    struct sockaddr_in simpleServer;
+
+    if (argc < 1 || argc > 2)
+    {
+        fprintf(stderr, "Usage: %s <port>\n", argv[0]);
+        exit(1);
+    }
+
+    simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+
+    if (simpleSocket == -1)
+    {
+
+        fprintf(stderr, "Could not create a socket!\n");
+        exit(1);
+    }
+    else
+    {
+        fprintf(stderr, "Socket created!\n");
+    }
+
+    /* retrieve the port number for listening */
+    if (argc == 2)
+    {
+        simplePort = atoi(argv[1]);
+        if (simplePort < 10000 || simplePort > 12000)
+        {
+            fprintf(stderr, "Port must be in range [10000, 12000]\n");
+            exit(1);
+        }
+    }
+    else
+    {
+        srand(time(NULL));
+        simplePort = (rand() % 1999) + 10000;
+    }
+
+    /* setup the address structure */
+    /* use INADDR_ANY to bind to all local addresses  */
+    memset(&simpleServer, '\0', sizeof(simpleServer));
+    simpleServer.sin_family = AF_INET;
+    simpleServer.sin_addr.s_addr = htonl(INADDR_ANY);
+    simpleServer.sin_port = htons(simplePort);
+
+    /*  bind to the address and port with our socket */
+    returnStatus = bind(simpleSocket, (struct sockaddr *)&simpleServer,
+                        sizeof(simpleServer));
+
+    if (returnStatus == 0)
+    {
+        fprintf(stderr, "Bind completed on port %d!\n", simplePort);
+    }
+    else
+    {
+        fprintf(stderr, "Could not bind to address!\n");
+        close(simpleSocket);
+        exit(1);
+    }
+
+    /* lets listen on the socket for connections      */
+    returnStatus = listen(simpleSocket, 5);
+
+    if (returnStatus == -1)
+    {
+        fprintf(stderr, "Cannot listen on socket!\n");
+        close(simpleSocket);
+        exit(1);
+    }
+
+    struct sockaddr_in clientName = {0};
+    int simpleChildSocket = 0;
+    int clientNameLength = sizeof(clientName);
+
+    /* wait here */
+    while(1){
+        simpleChildSocket =
+            accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength);
+
+        if (simpleChildSocket == -1)
+        {
+            fprintf(stderr, "Cannot accept connections!\n");
+            close(simpleSocket);
+            exit(1);
+        }
+
+        char bufferRead[256] = {'\0'};
+        read(simpleChildSocket, bufferRead, sizeof(bufferRead));
+        printf("Num Iterazioni: %s\n", bufferRead);
+        int iterations = atoi(bufferRead);
+
+        //Send ACK
+        char bufferWrite[256] = {'\0'};
+        snprintf(bufferWrite, sizeof(bufferWrite), "ACK");
+        write(simpleChildSocket, bufferWrite, sizeof(bufferWrite));
+
+
+        for (int i = 0; i < iterations; ++i)
+        {
+            clean_buffer((void *) bufferRead, sizeof(bufferRead));
+            clean_buffer((void *) bufferWrite, sizeof(bufferWrite));
+
+            char bufferRead[256] = {'\0'};
+            // Read message from client
+            read(simpleChildSocket, bufferRead, sizeof(bufferRead));
+            printf("\tReceived: %s\n", bufferRead);
+            char bufferWrite[256] = {'\0'};
+            snprintf(bufferWrite, sizeof(bufferWrite), "%s", bufferRead);
+            write(simpleChildSocket, bufferWrite, sizeof(bufferWrite));
+        }
+        close(simpleChildSocket);
+        }
+    close(simpleSocket);
+    return 0;
+}
-- 
GitLab