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 zcmeHPeQX@Zb)O?ei;|_|$+i+kZmhLqA(U;MNL5lO%d+n%l3FH|%*awh!<Lsv-jY0o z_u;#}m@*QTD$76z`WhvH6B$VWx?d5H1XX|vRqV<ptJqY&DWeEfIBu9GM(z@S(3iND zlgQWiX6EheF7KMQ=pR9QBOKp*zj^P?%$uE=o!uS%X;*J|ozKT8)w8=9N;B69BqTG& z?~)9V5Nl^^;qOLv6T1fF6&w@!AweKlq|0?~+9>gQplH{OOa=N!0%k<1hDgz_T54V` za)`2kkkPIISt)y|xkl&_rF^?QP2@8V4axQqb=qNUTDAzgmOXA-kamr-{bYwQ+O<o& zc4<d+2`dDND8&<Fg1>g@&r3DP!=&-QjCt+)rJa{{N`0bO2B!O7wxa)&^7^FRlE&RI zFQsybQh6T+JB-VJHBmPol;u_H2k-SM!^^gg#Rhk7-#QlEG8Ri@$G42P@7%I;doYs> zZsS$JdSMxOP3=2ym_fhIB1YYb{0&mZeEmBO7k*UyVaLCIrr6)qz4~*XkKHv&KCn#G z!G!km(%>@k&G17V-hSV4#On}y5Bx5f-;eJqP17*JJXiW_kTe$}gabh25O?Liw+cQ` z1^-kP{M}XX9aZrAtKi`(_$R91@2i3vRq$EBHTZecW&kS1Cs+l?>9LajNEQ506&!t3 z^0U7R{sX`@_<7T<095jGZ52EL_$^*1Aa}!W9oxXPkjSKYgTeS1!r`!!Ws*Z5H7#b2 z$1FB#B@<)(Z-!;kkwlbPvA7A!8OuztxEarY=3or)v>A!Aj1@K0X*T>wI%b(HVkKj2 zXe^mA*>EZyOIX7!GBjkSEM^!(;}K&xmWYhS9yLM4(v6H2Nn1ud5=*d5LK^Jr?djNS zYzuA+?qEjGq5TFFV2)t%=|lVXjwKW3p~&DEx)_Nk6VintR4Xd-X4k=(T>cM7s`H<c zalGO`wcKPk#8zScDG^3S>jA}c;(C$MD(8E`LlSQciG0FIzI>0sac;o!C@ng0xg_$e zf&*Vm%0QPK_<9F^#ew6TLy4{jod0khq7;()D*?c{i<0iZX^zCaJ_nBTA*Fr?&ev_3 zG2p<R>%pi4$FeD<95}@e^Tr)Gbc~%Q95{{@N+%q+yj9>?Cmpz-l!2ad;7tyE#(~os zh1sVa_&SIF83*nh&*vPtyhOOwtOLjOhtfp{{w@N6E;w+Uvumjqfm#G=5vWDr|3?IV z)pXNu^vPEm_34Ix*~*wcHEY$C7xc+*HeTQXDDPMeaH+iMS|Cju8S0N>PO12la=Cnx z%Xs5aDqgZ>T=+}HIa|gBzf}CXE#pF8Dn4n;xWJc+pSERO*h|IZwu}pUsraxh<3e64 zMr;`u@KW)^wv0DCrDE8YaUm}i+iV#Z@KW(+TgDrqQgNLv<3e64`fM2&@KW)Occ{I% za6|iT85eA5zb)fJ4ecixqL+t#L(|4i#^VR_bFjU4%I7`uS&#fRkNh_t`AZ)8agUt$ z$WtEq6COG1k>eiO^vFj%@?np>-y?T<<UJmFhf{8QwI_G!AwBnR`sB}+`VRHx8$Jg; zuIJZo<YdnrguA@{IxzY5Nj<-37chFhVH=WNSFH7LX}@-dxU^T57n?RtfI7P%Dd?}_ z`a9~7Y<@@2E$MTw-J{Q4sn>na>zCfKZU6_*Ne7MP#bMrWWRKVX#GaQRn`Li5tWWOw zOJw!j%hnowde7g2P<Z=lxm<|C#q@l`S&)54z}7Aw?Te2<CNhV?PCx$20F0O1`LF)2 zT-I}EXMjZY=@pw=xZkcTZL{-JvjBp~=BLit+&3jR$t~HjRf4HIwpE{=LNEGs09tZ8 zR6)=0ShEIeIe!kl6yAawK8u66uph43r*QZ^gW|I|kP9)ua=ggN^H^{>dmH%q>FwxX z?x`C|86x>D7-)qJpe~#-;6U>mQWHlFcMF<NqvjG6D=V3Oh$=Zb3v&@xt?+fo&hZ8w zKab69dOu^w)(CzP#?!F`IDb$&-{f$fLg$~g+jJB;$YzC&=yASq1)LQof!Bu?^w<k8 ze&N$$eeM@p?$X@btDe|=DfjKz3qOD<XY)etpYneefKo**^!(HUSU$zuf&Q?P9|vT3 zo@dlCQOf-Q<);1_{!a7SH~qsbC|-|>xv3X`==nT4n&vU(?)2REK?OT0H--H;d7k%X zwi8<T=xvNmKaK%_ZhIQ0HoMzGwv%UY1_ciXJRZu~)Gt2(K6Zi+Z)ZIQt_pG61z6Ai zmU^xmOPg*eZx&{_!K0pg7|nJ%&2qL`6PnFWEdt^3nV%|1c7E!j&HX)a7(+e(II<88 zG!W4cf%r0b%yEm!^JrJjVj~`wwQ*i?S78PyoCbAa4vqNjZ>SN+0fyQvfdg3^?0CsC z=zhsIDmI|lX2oiXZBcBiV%rrPQmn4nKE?Jcc0jSCicKkYT(J|1J)zi>ian*+8O5Gf z>>0(LQ|zo_FDiCHv6mIQsMrFr`8>vVns?Sy_yj`q;MCjLu{`#A?s*vSDOj_`WV6AU zHDCA+h`Finf|L2Ff0X@G+yFBmb{&;6KXpa1IIU3EDK?<kX2oiXZBcBiV%rrPQmn4n zKE?Jcc0jSCicKkYT(J|1J)zi>ian*+8O5Gf>>0(LQ|zo_FDiCHv6mIQsMrFr&~*^h zWnK5}w?x-Lp6I%>upWr6GcXIfg*-sFD3-xErEXDdK(Wn=)fC&J*jB~1D>kH9U9o+N z?N{u8Vn-F5QtY_Rc1?)NcAb#)q@<@Lossmkq-P}Mq0r~MW~F>l(gjH`OS&j&fz$ls z7;GF85HUS>NzbqUC`{VVh#@1_;ii8_l{~5}>y`^|!m_|eh;N#c-F(nAJth_!oF-xR zy9!#xzk(^SY2%+`x%_@J{E^=Lp4~Sy7XFi-+z-Qtdvb4v4~28TJFMro+yU@?y_>J% z9-#30ub}+7tM%5#wio67QE#r)n|rM@_w#W1h9B#b7kv7zm$JXW{lNoA!ViXzgdYkU z7lwy}&hjqEa{0c(-bwK4)c({WP>aAHPy~GPDgEJ0WW>Bv+mzAnN+r|Q-K*K&WOgj7 zC6bml1n+7rQ;TTgP0!7%*?s(#kIaYy!1};Qi)S;IHfU<Gga+?^MojI2wpK`YXl>ho z99hje;LVRVl#HjwOv{XF$%KZ5X`9f6Di7ZeX;xB;M5Adllfk@50xKe3BcYjH6PY94 z6M^eQ!W^<<$pl&*G>6RC$IK`;Yc<=H!La*otltgWaE6Z*T3;`h$APAn%H<iL6F_lx zKl4VpJOK2GQn`$?`V!2iOF#$UhO!-QaWK)db>E{0nQuJcyK&9R#*>hTIKGV4!3R7s zVXSjy0LiWJ+YY}oua(Oo^x+S5`<p-5bnPRJ6YQQ1ci#5Lx84FMw|@}mMW`D$L=Y1C zwcs}kc&n@f;#k&W@SB73?rj97%OCh;-QKnIZUo!<Rrp<j+bk0(>-GmeRoCNh{)_r9 zzm{Lo<!^bcq0`^`$!m0f`{c@f{!qf-9`?6}{Vg4St;65k;SY598~MBLUxT>@vB1qn zE!84Wi$E;`wFuNAP>Vn<0<{R#BJh7X0`z?reUC-A;6&kdib(RNeXSJx@dh0deIrHR zec?lFOnA$VX@ek)zW<VDcK)01l#{4315ZXV(LH#(ywRuo{fjamwq!gNC52ZaJT*(| z{Kg9*X~tUa5eoF})<xMs+<#!geG?}7R;W)lfben2P`mikFwlqR^gL1dH%XcFU~9$O z2gPv+9)WSWU;2aRc9hR8VXMaFTVy_LZ@5hDknaE22z`I;b=WHVJ0xkJqyv(sB%P4- zq@**Fo{@A`(gjHuC0&vfKEmWFAgLy4tE3@G`y}<&^Y_V(A)&Ev@7_DLmcxVDgq78H z1-A!Vx3p!s)OKuJYp`{Dux+!zf1gLZrhNAI{Z8$Ac;-Ogr@QfbM&F;i@fGaj6*{&a zMgffnxBfMZ#(^7O$!NT|@kU11ksDvd==yWxs~KJAZv0wC<H3!?>_GkK$f$=?6k0{x z&ju>=V?AqPsfu{OKCj_$5Ak2eX#R2I@PUHnL<C>YuD8F(cjnf^(}(t(oe1f#x4&a` z=GL=!+4Gnie>bZ%j_TnHcba$H`Y>yToQUA-9p586bL$z+stU#FYXy6QznM@dV>n;e zL8mM@KdJ-_Km9-)Lg7l-e8g$~r_2uk<AeINgam@+Vd{pTuR<K+fTN!YkN=}we|bDl z0bZ&8)!OwW_j3cgi$6^Q!I3KY`8%G!ep!Fb0`7xZ-rHZ_lKQlcaS{Ifh%?KtpVtA0 zSzuZJ>af7nVJ~>D{|0E-bpZCs1(4Rc^?+-<4ELX(aD4f7@(lR*bS*b*1N{K3#(|LA zPZQwR)h!<{_`I)@pI58kAF6^!s^C@?{6rP}3svy1Rl&bo1^+SN7zgk8dZmiK58|o0 zL&l{5;Opw%!)W~=mG>f!k&{L%WX2tUSBmG|91pNXIfVJMO0YRlMgM8Y3&6N*4N1q6 zyv*yb=EJQL9|S+BAMofWWVtyx9{Dp=u*p;@cd82hL>2riRq*pw@JoPWJiYaN32;re z#Yx@*{1zu5`S0;KEYG+e*3nAmIo=O=rG8;UX)9x8;SJvqQ%5NbD{jC+jf9zjgA~!E zF*24MjEoskE1Aw1k?c6LpYaFVTX(iqR>JcfF(Z;rM~)h1!b%@y!|6!eG@{vf{3w_> zBm*=pmukjLf6Ponr3|C{V0eF*(RHBHfO8yf%_uWE?>`XU-?P`9!%vO?1gEZyE?s)i zI}b8rU+=vg;a=n3?(X}#4jG5S9lc%Xm7g~m%4B(+|MP<-W;9|WWK$ax%v&ZxLi zeqzQAiDNQuj30|}LwJJ5jVwDC<Id&>a@-K~9@JJGgP}t=UJds_86%oW8l!Ns2M^Ko z+zY1BSi;C=OmWo5YitJ&dr+PO^6Cs`GO`BzEDyf^ajS^8J01)U3%L<IfaFHRxgs}a z7;p}Vt`<BXRPof0`@oUggE+M0!T1X?H^zdQqj4)T2-HdoI!YWIZZgv;7KFE2W^g2t z4W`n`l$o}UI-tR942~bhq7n*s^lY&rBaEw$Mlz!;7(JSRA_TS4A_qoA2Ht<U1OxKY z=2!#`B$pbqSdjNg5ZK^I5=3M&<`4^7<~WErJV86jujimSDhK3f6uglne29@LEQp7q zBJmhF6XwvzEC{ng97g)`S?Rxz;4%SI9Na^Q)GYT0L}~vlv$-zuNZ$uP+&Ypy?MH}e zkmpRaPbF+8Fi!h^Sw2yG-{(xU{t?y#jMJX>H$*j3l+<hg5y0VVktEfh_CZ8jq#ZpM z@YX*9`S?tL>}kJ5G$k{zju>aMr~P{jFl;i})4qym5%Qb~eK^y@AmE;!>}mf+bh}ih z`jZ~fV~~%}2uP-V8c|K!d+RS@mInr7O7^s$BTCOLsC;kxKQHY&q(j>G5vAuQXpb@T z+CK>x#)SOC&51~odUrD3{{N!KUXyl2L!N+p+_Nux>}kJAl=Nk-ywzi8JodCNCF*=f zjXua9(QkO{XXMQX(X*@2N+q%*<XK>x@uPh%QF{JH`ri0GC+(^KnI<(QeN~D?sQ*a* z9xzxw*)M4#hiIn|?Z4jgUxXZ|J?*cFHe#kDdCPwp@^G&zryYAAPUqac`Xm#518kcd z_VnDbbqj!yNKZ&gCj2U7;I&KT(>{^@-vavo32^*jB0K8GuK<QkBzxNbx5yiI8h>bu ziR_791IA8!7UF8~QHP*Zjzn#HlGlJS`l9l+kjM#CvDZYl{db)#U#i<U+23v>g2B3C za#Ff>M2`3yk`5PT;P5;?eCux4pXOg29#nT>DgJ8hg6{TYQn{qN4j7LL&w60D(AeNH 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 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 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