From 3c5a2c9e83da6e0a59858d55ec6c8b76446b4047 Mon Sep 17 00:00:00 2001
From: 20050114 <20050114@studenti.uniupo.it>
Date: Fri, 3 May 2024 11:11:23 +0200
Subject: [PATCH] es Reti

---
 Reti/Laboratorio/Lab1/client   | Bin 0 -> 17376 bytes
 Reti/Laboratorio/Lab1/client.c |  79 ++++++++++++++++++++++
 Reti/Laboratorio/Lab1/makefile |  10 +++
 Reti/Laboratorio/Lab1/server   | Bin 0 -> 17536 bytes
 Reti/Laboratorio/Lab1/server.c | 119 +++++++++++++++++++++++++++++++++
 5 files changed, 208 insertions(+)
 create mode 100755 Reti/Laboratorio/Lab1/client
 create mode 100644 Reti/Laboratorio/Lab1/client.c
 create mode 100644 Reti/Laboratorio/Lab1/makefile
 create mode 100755 Reti/Laboratorio/Lab1/server
 create mode 100644 Reti/Laboratorio/Lab1/server.c

diff --git a/Reti/Laboratorio/Lab1/client b/Reti/Laboratorio/Lab1/client
new file mode 100755
index 0000000000000000000000000000000000000000..5d9a70d87238b18ad21a966a70f770747a6e98ff
GIT binary patch
literal 17376
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
P{*_(AVxz~wBeMSn)gxRd

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Lab1/client.c b/Reti/Laboratorio/Lab1/client.c
new file mode 100644
index 0000000..09534e3
--- /dev/null
+++ b/Reti/Laboratorio/Lab1/client.c
@@ -0,0 +1,79 @@
+#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>
+
+int main(int argc, char *argv[]) {
+  char valueToSend[256] = {'\0'};
+  char valueToReceive[256] = {'\0'};
+  printf("-1 per uscire\n");
+  while (valueToSend[0] != '-' && valueToSend[1] != '1') {
+    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);
+    }
+
+    /* get the message from the server   */
+    returnStatus = read(simpleSocket, buffer, sizeof(buffer));
+
+    if (returnStatus > 0) {
+      printf("%d: %s", returnStatus, buffer);
+    } else {
+      fprintf(stderr, "Return Status = %d \n", returnStatus);
+    }
+
+    printf("Inserire il valore da voler inviare al server: ");
+    scanf("%s", valueToSend);
+    write(simpleSocket, valueToSend, sizeof(valueToSend));
+    read(simpleSocket, valueToReceive, sizeof(valueToReceive));
+    int returnValue = atoi(valueToReceive);
+    printf("\n\nMAX: %d\n", returnValue);
+    close(simpleSocket);
+  }
+
+  return 0;
+}
diff --git a/Reti/Laboratorio/Lab1/makefile b/Reti/Laboratorio/Lab1/makefile
new file mode 100644
index 0000000..f0ddf27
--- /dev/null
+++ b/Reti/Laboratorio/Lab1/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/Lab1/server b/Reti/Laboratorio/Lab1/server
new file mode 100755
index 0000000000000000000000000000000000000000..8ecf7be2d7e6ef44a5277f702f4519e6a7f3e106
GIT binary patch
literal 17536
zcmeHP4RBo5b-t4PBiphh8#_^;!OsLwWk74mwT%oIcJ*UFQQ0W|A#M}1UTL4Kol3jP
z?%P<V)Dclcy(6|!W=e4qk`bMDN+%g`I-#X>3^Fvx?lg%^)5aOdRB1}Pn^0me&@lwF
z{my;&yg%=jP9~F?&g}K9&N<&b=iGbGefQpX-+R}e?e5)KT~#GG)rdO<NeinjB&afG
z?@$a#P_&Dc_`6PAFP1=FBrz*LXc6RE=|Z)a)+)RPl<b;_DM5e3f(28qAyKj`mrg9V
za+r!nOD4O;#46cO|9pj|$CUH!@-!=7_~=2^KBjIvicM3CW!JRBOD`)sZa>=*Om@x6
zu36bJy+{>8V#@KPn9#3X#nVqU<WbV(Um^T<2bG<lb}4<PR0gGeubI(bro297SGV5s
z<ELB>Q!el0u%o#AUlVupUR7SXe#ohQV5-6^HVw!6w{6)p9Bmnn#nWRgW9{2owrvTd
z5`oRK3REvDgRZGvdkzS=nI%kxQTD|eB~yOv;QE;_o%`maU%vZN=b5J3pZwsRz<un4
z$|N01WUs0uW#X^Jk91`Fs~#l0ny~BeJ8yh<WP4$XhY96*(l;P!9>fyv1yMuXldG4(
zTg%`dErSo0!5=Myf4B^OYZ*LJ2Jb9`PnN+yRt7&(20sg2!_S|30F;X7#xnSwW$;89
z{8MFcDzj9%bTyU2e*j#=&!27tP)eVs#ZvfZfZyPE0(lR9t8m3?K`WEz8G-RMK*ML7
zNF@e-&oG5C7Bj_=nTQX|zbTPQM&eQErA#9(Qf6`(WW*RrLAO7KoTL$niUBh=Vjwqa
zB$HzBXfkFRB4Q?DVqiFtGQ{9$G8Q)nMPy*W7&S#WJTMjs560q=;n@8KM5;wNWk!-_
zcq9@-F>z(EtGB14GrT#lIj~iPd-m@RqX6Rw)g`%qcjs^-ZtRcr50i@{BZ;_j5w=uI
zD$3?pV=R~cN2A>R&ylUTRbj+ef#rEDeQj(R>C9N!g4Yv{@9Z^JhNjjF#>W+28?^En
zXZgZi7EW^umB(qph1W3%nsea|F8rbkr?JfGvJ0m<ixXcTG=I`O#;H~5F9kqzAE$N~
z&T}l~1zkAJr<`;bPGxZFbK&mw<e&?uvN;`g;T${48*<_37(0!+aCIvp^Tu4by48^Q
zxC>utdlBM<3$J(K(=ME^4az?0!dJQUXI!{@96#a0)g>aWPPuSezc@YP!q+kgI_tte
z<igLo@Fo{N@4`Rg!Ygbg0+k3<B2bCIuQvj3HeCO%KJj|3KDGFVn}pCOXU*#3ygu>w
zwJ*ww6t}(`5Ta1r@C%TJb%OMVD5sGBaj{sOmNMNq6!Pb7nHKIs{){ctf?dde)0SzW
zF61A#Wm=#M`7hcsEzE`dgSJcyav}d|Tc(A$kdN3hEx?8R$8DJw-a<ZP%e3GY@@=+E
zH#CL(dRwN2w~$|D%e3GY@>RA>H#&v<rT4kLwD6++woD5y+HcFW(4zgeObaa9Z_Bi>
zqWvr*x+5~WT|&ke@*~*(H>`8ytWTcw$$#LJ(>{5`CmTNbkWW6~lXv^%ZlAovCvWx1
zEk1dJPyVP+Uh9)r`sBqv`N}Qcc)jhG+y1L3bN)U(^KbgZzhCUz-<w_hC%A(2?8<eL
z>^Ot&D6V}OCT~sa*&XkI(X)#SM7Ccx*J5ZqNj!$evf@I+x^bwB7Zrv6IjO((1tJ^Y
z*E1LOGjH6bpSfJ4SG}a4f8SgK2b0P{ZE;~x_AA@d_!-~vRb-3w%?I>}9sR`Wnb*uZ
zeQL)bgxn9W6pOhiF2<J@ry*Azf~{RX+2@ZUlb8dr(;s|&8sjf>`T>~fnWslVqWaXL
z4b9ST_vN<P=fR2GUR-{9X7UMAo12^mAsFlhhh0$Y++>cytYwjz%S8a`nHTh|G}bfc
z_3YZGG1Q);hY@;a?iuoz`+aE5O`fzJP21dKikpyC6~~uZO!e_i`qU&<Tc2t~=<dH6
z-m+T<;MsQi5OSZVSts`@xMyj;c#g#9Y39jY29}XUPMoHKi|L!-XEXW9oOzaZ8&Vlv
zr@?9NFKuUE00+%lrAfn_HCL17XOXWenZA!JIWddLld6^rB0Dol4Seu4{cZS7A&%Es
z`~n8}@i?4+{U)m#8(hxkFk$6xfQ8kjTH=r`a!<Yok8`;{1j(%ist?TTv6o-@$`?cW
znV)Kz^Jm^!_N9&IGyf2K`FofnH_m5X$bPO7rCPN>&zyqMv$7rJk1DwWz6R%HMzyd?
z$^C-r{Vk|Y$=Wyk%`6oE6zE`P@~^1aY?d5N$(Txadgi-O*+kWwq<)+@EqgQFg%+N}
zGmoi9C;;fT)o7aCZQp}S%gJ*z<-@~|WYLa?VtVvvx5CFHeE2)-Cz$4Q@7XS3eGddH
zWd95fW_y$w?JT(G&XU=;-DXX;+1J3$P5v>eN(tBgELa(-xyiGNotvDoxrf0~H1+Hw
z#3C+aU^U4K$u01hkrorD$*!2D=KM7VpT9YGQ@vW;^%{Sdo3jM4J+9_*OOYW*T6SI*
zM~<!HzVi;axyg$FRJG~iSFFGYS8T1rHacvR!)gxO?69p4+wQPIht(an&tVTb>|uu;
za@bLa9dp=mhdtr2(++#mVP_on35Px9u+KQ`tizsl*m;M&;IIo0n`1VcrT9+CUVWCH
zl320-@nzXblt%-r16`4s{4=RZe{Yx9)$zJ1iDjfT^$1;S3V8_=kbz-q&6Azv4L!+)
z&P`r+Sb+<Pd(vSW9k$6~HHU3>*j9&aci5oA>JHoIum>IXu)_{H?5M+z*=+Z?RoU(n
zicTwfQqdVjpHTFaqB0cvT=%S!&nh~v=mkX=6wMK}f{Ninv6HLNCM*cgSskTTp|}5=
z`YKBrSM_5Cc@~IXd=EnYO$<M^zSFWA`b2Mb$IsRa5xTc0^Dm(TJ(;&d`$L)c4(QpI
zR{`(q-FSuWp>t2Yg;LI3sWI2Jy`t=UGlkyF8(o?I3>DY>t3L5!mA?H)>7Ua5^(PO7
zJ{39?x-S%dad0ruu<rBJ7J2_icivR4yf3%!#ASBnPbC7C2vj2QD~mvtddj{buz5>r
z<#KT#6**$urfo=RcZ?>I=AFw$XCgfu)#3?L8^9YF)6gQC^#*7Ca<Nao%263n0HO~@
z+DJNOYW;>5i)(nNbHva-+1845i`KRo<j``_f%iGuKw@Nc*f5Q#mWXRqn6`mjIOWk>
zAI(f?k!Un&q*9a@iBm<acSK}n*F@!5?|tAp9yjo+C=n+sN_&i>+P#tCG_@_NJ)rH5
zj5+f1<zhn=JFDwzZVy5iYqD7L^J38iH7^#6kAZ$3^jo0czf>&JySUSZV(}kA*WlLd
zb;<|bf?ETAW?pswUQspHSan_9(%NZ-)4pgF_M1RO*HXHX6gT3x1;3MT6pM$UC+Zt_
z);HbVu;OU#xVY=u+iv=;8*czA{ZhH}sFyS(5Q)k&@jDB=kL*>VvL41SkMjDcLEZI@
z4^?-r<aZu;v>?8LpN6{@161s+Z~Q`aPkqxL)pXZu*+t#;%?~f`s&9R0iC*76v2<5`
zFkasts&5U|H+R%)9raBe^^G0%wetPcTQJw*hwkYssS<%o1S%1zM4%FZN(3qqs6?O=
zf&Y&Y;P0vU`zgM)W?ILMQa9r(m3&ft%*5Ze@ON7LjZ>}C<8Pt(do8+Or^NYhzh6v{
zJX1q|)wj!_L+S>e@8i#^d~25@#3iXM1YTFj)TF5Un;n9bnP|GpQlJ+nlrF0V(!PQc
zZ5=4_H(k@Jf{Z_-7_PT`LI-_3+?I*Uzh23#hbL^ZeJD;scrYjBlgb~SC33#B#P&<d
zzpL`G-H<Z3L%IKz5&quV@32+%cTmwjMGq@Fs_3|)(~8b0dP>n*MduY=Q1qgr_=r-b
zMnyG6TNMo|+NbDYMMo9&*ZYIy+MuPetF!Yqt@%KII&P-5?SU<U)|R%kl-iDOZVj|<
z3AAmr@DK7x*I1SPeZO0~2G1P$`*bf}Bl!DsFTO}TP@<!2@bxv153l|b!Q;Y<FSW;y
z7q1n3U3u|kg0Dv}zFhEi@5NUL9v@yDvjz97E29RdD72Dzy%;aik2Rt}OqawP?eiKg
z_lW;0!Sj(9#|H|U8?pEragE^b@!h#Kc*@YX-i@&STKhXxcW#aNkl=aEi+@;@8do)<
z$)1P2`j|z7Zp7kiT;CVFb89?bl3F=5oh=fV<l7UsF3sQ7=#)nH$B)41(+|RfKAf6Q
zIIjl~WuouXt5Bcjpe0jzly>4*RU!@}z{$_7&;K#0e|0=h0xwnna_xFt`dK6P%cn*V
zT&a|wr)2)xtNLpecok-Se}A1*`n;}55r1Bl%+=S=&w*nWxT=2-VZo^uSC5OuXxM7R
zXId?o{7h*ra7~us{Zk7+nz;Hp`6uA+?_Jrd4SpJ--xy@XqV2#-={FEwef2o{?K1k|
zGWeP@^+}e|KT!t%N*VmAGWZK+@b8zw-z<YKLH#Li!WXw|%CxH)xaJM9lx_vSs`?{>
z*Be&pBAj|a87)#7+so8vpDedgXzDtV&oE&#AaVBU(7yxQh;iB)bTH!Tl%ECF`I}Vs
zQQ)NC7*v2F6H5P_8o%<{D)LU0Dfi1|@F&aQvt{s?%i#Y3oZ{)PX92k8t-6%zu#VnP
z0)MMaoSUIv>O99Cz*We+-UgCp%1q;p=74aHP=w8qFb-(MjT8=0L=)j7!-@XLa5!ov
zlBsYcJtpjT0fF|`ZEdBM=p08Z97!f4$HGS3Odb=1$;gNij;2ROj={twg`sJBR8vOs
zGe#1X3Ws;@4ejm@ckk&6<NStKGb+Mezq2Q_yQkBeBTtL~!YQqAx2`<sU3*1%SMNO?
zq2BO4J9qBu-XGo{>geqzukxJ9Kq@Wk{J$S4F`^MOVx4OV2HnR{tRpa9jLyrXybvE@
z@uKozjTf@c(s(g>YQ_uEF&i&()v+0Gwmi4vh0w`plyypm&*b<uyys}b(NrQlgabfy
z#-`^Um_}pqa5`n6OPpv@x2h9Des}$;lqydi?4fr@UKQ)rkPpMjAumFwlDvp@$jFO@
z!#EVgmk^y6DtQFRd-}-h!8*a@!{pmEFD3%1V<TpyAJj}*bci{ebTX2oB7j$7M&L+1
z9T-g}MvbI-%mwwQV>rVYiz+D8(bHl^jtHqf6iE$<K=fD~MOf5KS~(ahDZD)M2w~(U
zjo}CxC~kDv6am>M0kDB135dj`i~$iajWLKcW}%&s7kR)KQloSz3U4e~KCIztSul^H
zA|o+4v&_-QB7mu41jFAu>-^FZEgzWra4%w|CbiFC%KLJaEp?eE`Z4@yOUm}VuVJbo
z&z*Sx%h)zBZu^6(e5Uk%(4BZ)WUL2_+n)DHOf^<i)NlU@;P~Vv!S(0;6w_v9$Il!5
z^^YK*o;9#N@4J}Js0^wj#hLB-xj+mUHJR=C`3BQV$a5$1;ZC21K+g);p7(J~+m$lc
zpY@m?M?O7!V43%OOf_ZiufKvt77WFd?Rj6w^nz04^8M|9RM~eZJ>EYu<>xVEPcie`
zKMssy!v1m7VkJe@?U4ely4nJm$MAF8Ys!x4VPC*~?!{mD?0MhHl=ZnxmYJUN+4KIE
zsr#Ka`CvPyf9td7`#7dgbHK<LiR~;2UkrnBx1aaRO!>JU>-)#gx0OBjztEJXqAPsy
z^HoQD$7j#`Z>C+!9TR`~ulVeFpU$-Q1Im95_O$0!(~iBL=kxOZ`m)TF#%F`ep7;G)
z3qT~+vm{4m{0cJY+U4?jzsdjq!9`Vn8h@17j{EWJz(|Gd`FUoOx{=S3kt?x1(<Lx=
z+l!!5ZnY?v!!Fp4<vJJ>#^q~4E2puHy=G<Ge^;sUmAZ|y{mnLFF;rJdZfak9R+ju5
z<nmR8>6|`3LAT?_^DjN8<+@8l^`}owoPEAbE|+!bag<L*X3gAgX<X|w@QLDo07_!)
AnE(I)

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Lab1/server.c b/Reti/Laboratorio/Lab1/server.c
new file mode 100644
index 0000000..5255157
--- /dev/null
+++ b/Reti/Laboratorio/Lab1/server.c
@@ -0,0 +1,119 @@
+#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";
+
+int main(int argc, char *argv[]) {
+
+  time_t ticks = time(NULL);
+  char MESSAGE[28] = {'\0'};
+  snprintf(MESSAGE, sizeof(MESSAGE), "%.24s\r\n", ctime(&ticks));
+
+  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);
+  }
+
+  int max = -1;
+
+  while (1) {
+    struct sockaddr_in clientName = {0};
+    int simpleChildSocket = 0;
+    int clientNameLength = sizeof(clientName);
+
+    /* wait here */
+
+    simpleChildSocket =
+        accept(simpleSocket, (struct sockaddr *)&clientName, &clientNameLength);
+
+    if (simpleChildSocket == -1) {
+
+      fprintf(stderr, "Cannot accept connections!\n");
+      close(simpleSocket);
+      exit(1);
+    }
+
+    /* handle the new connection request  */
+    /* write out our message to the client */
+    write(simpleChildSocket, MESSAGE, strlen(MESSAGE));
+
+    // Read message from client
+    char bufferRead[256] = {'\0'};
+    read(simpleChildSocket, bufferRead, sizeof(bufferRead));
+    int valueFromClient = atoi(bufferRead);
+    if (valueFromClient > max) {
+      max = valueFromClient;
+    }
+    printf("New Value: %d | Max Value: %d\n\n", valueFromClient, max);
+    char valueToSend[256] = {'\0'};
+    snprintf(valueToSend, sizeof(valueToSend), "%d", max);
+    write(simpleChildSocket, valueToSend, sizeof(valueToSend));
+
+    close(simpleChildSocket);
+  }
+
+  close(simpleSocket);
+  return 0;
+}
-- 
GitLab