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