From e03539a3221bbded04ddc84af337c37f115f443e Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Wed, 16 Apr 2014 14:24:42 +0200 Subject: [PATCH] Creato alcuni esercizi su server ricorsivi. bugfixes --- 7.client-server-daytime/daytimecli.c | 1 - 7.client-server-daytime/daytimesrv.c | 1 - 7.client-server-daytime/readme | 2 +- 7.client-server-print-ip-port-both/client | Bin 9508 -> 9508 bytes .../daytimecli.c | 13 ++-- .../daytimecli.o | Bin 2180 -> 2436 bytes .../daytimesrv.c | 8 +-- .../daytimesrv.o | Bin 2412 -> 2412 bytes 7.client-server-print-ip-port-both/readme | 4 +- 7.client-server-print-ip-port-both/server | Bin 9644 -> 9644 bytes 7.client-server-printipclient/daytimecli.c | 1 - 7.client-server-printipclient/daytimesrv.c | 1 - 7.client-server_recursive/client | Bin 0 -> 9200 bytes 7.client-server_recursive/daytimecli.c | 28 ++++++++ 7.client-server_recursive/daytimecli.c~ | 31 ++++++++ 7.client-server_recursive/daytimecli.o | Bin 0 -> 1672 bytes 7.client-server_recursive/daytimesrv.c | 66 ++++++++++++++++++ 7.client-server_recursive/daytimesrv.c~ | 41 +++++++++++ 7.client-server_recursive/daytimesrv.o | Bin 0 -> 2384 bytes 7.client-server_recursive/makefile | 9 +++ 7.client-server_recursive/makefile~ | 8 +++ 7.client-server_recursive/readme | 3 + 7.client-server_recursive/readme~ | 0 7.client-server_recursive/server | Bin 0 -> 9476 bytes .../echocli.c | 0 .../echosrv.c | 0 .../echosrv.c~ | 0 .../echosrv.o | Bin .../makefile | 0 .../makefile~ | 0 .../server | Bin 31 files changed, 201 insertions(+), 16 deletions(-) create mode 100755 7.client-server_recursive/client create mode 100644 7.client-server_recursive/daytimecli.c create mode 100644 7.client-server_recursive/daytimecli.c~ create mode 100644 7.client-server_recursive/daytimecli.o create mode 100644 7.client-server_recursive/daytimesrv.c create mode 100644 7.client-server_recursive/daytimesrv.c~ create mode 100644 7.client-server_recursive/daytimesrv.o create mode 100644 7.client-server_recursive/makefile create mode 100644 7.client-server_recursive/makefile~ create mode 100644 7.client-server_recursive/readme create mode 100644 7.client-server_recursive/readme~ create mode 100755 7.client-server_recursive/server rename {8.client-server-echo => 9.client-server-echo}/echocli.c (100%) rename {8.client-server-echo => 9.client-server-echo}/echosrv.c (100%) rename {8.client-server-echo => 9.client-server-echo}/echosrv.c~ (100%) rename {8.client-server-echo => 9.client-server-echo}/echosrv.o (100%) rename {8.client-server-echo => 9.client-server-echo}/makefile (100%) rename {8.client-server-echo => 9.client-server-echo}/makefile~ (100%) rename {8.client-server-echo => 9.client-server-echo}/server (100%) diff --git a/7.client-server-daytime/daytimecli.c b/7.client-server-daytime/daytimecli.c index 3128e01..82835dd 100644 --- a/7.client-server-daytime/daytimecli.c +++ b/7.client-server-daytime/daytimecli.c @@ -1,4 +1,3 @@ -/* Client che interroga un daytime server */ #include "../basic.h" diff --git a/7.client-server-daytime/daytimesrv.c b/7.client-server-daytime/daytimesrv.c index 47ac4be..95ad13b 100644 --- a/7.client-server-daytime/daytimesrv.c +++ b/7.client-server-daytime/daytimesrv.c @@ -1,4 +1,3 @@ -/* Implementa un daytime server che risponde alla porta definita dall'utente */ #include "../basic.h" #include diff --git a/7.client-server-daytime/readme b/7.client-server-daytime/readme index 98ce113..114b51e 100644 --- a/7.client-server-daytime/readme +++ b/7.client-server-daytime/readme @@ -1,2 +1,2 @@ il server per ogni richiesta accettata copia la data locale al socket client -il client colelgato legge la data copiata e stampa +il client collegato legge la data copiata e stampa diff --git a/7.client-server-print-ip-port-both/client b/7.client-server-print-ip-port-both/client index 9f0059942dd4dec30d493eb1e9a8226d178c88ed..f4657651bf375e95768d580ef969ce004ab6f505 100755 GIT binary patch delta 1214 zcmZWpTSyd97(TN)q3dPF!YD&pvyCnUULy=|(ZncPsVrtmxw^ZlY+lzJwRs_-!?>s& zi9iqo2_m9s&D(>QT+|Fg3c~0`pPax4i^zQ1{&Qwb!NczNpYJ>W_n-d^XJ#mSD7$AV zA|nVP4k6UY1Hj1WT}|IV5~hhaG!2b}kpwO+LJZgB=ejJCb`Fwtb#^;BoP37l7C}pv zb-9Ja7}6sabTv*_7reEG*9P%LUgGSgBQb9>=2?+9ts{ZN@h7J1Px8J%=EvEecve yXj)t$O3Ybqkc`J%&0I2S--TLO5#W(*e}I~FZVJ)XJ9I9FYP?tH$eVTSyWt}AQILWu35nm|aUhm2x7_s%shJKx#!-S2#J?#!I=n(><9 zh%IVDh(icD1OQmkz~{=u9TuHDt8-|F1s8LNY%WGWVzdkQb08LVv2RN(;q*NOw{{ac ze2TOJ2s5Nwkw&z?Mo4%_UXU|P5n4+Hfg-I|kVN#S1Iqr2uX^!1(UT2Dx}(h+@w6#5 z^A&Il(nnrar8QaYwQ4tkXjWc|;Z5xv-Y_|?bpxT>4dv-}Ua-^kUK8}>*|r_lN+FrD zQl0cc^{vXvf|mB*VXL8|dPDoRD{pDP4G1kt^R(9Oo7Z^QlohFDg1D%cCuDcsyoLxl zNi<~1{<_y>%juTpW#zq7nS+8p?H+c-XSMXkVliz5OvSKoNmd5EBtK58%BI0)@__CT zbgDu<^dp9UH7oFw#;VowBjSuS24_13_4*?lY$x>xA#WzDK+L*9T0l4$f1XRfZ7wQ~ z0~4~up+3OxxRk#X? z0Jn=Nf|u~>&MU-4S(5wb$g7r>U9F)n=4Gxa0lZ>%3q>o%M2blilPRW9Orw}VaW}54GI(LQt2MGxbB>(^b diff --git a/7.client-server-print-ip-port-both/daytimecli.c b/7.client-server-print-ip-port-both/daytimecli.c index 8d53c16..e0aa838 100644 --- a/7.client-server-print-ip-port-both/daytimecli.c +++ b/7.client-server-print-ip-port-both/daytimecli.c @@ -1,4 +1,4 @@ -/* Client che si collega a un server e basta */ + #include "../basic.h" @@ -28,11 +28,14 @@ int main(int argc, char **argv) { } struct sockaddr_in r_server_local_addr; - int r_server_local_addr_len = sizeof(r_server_local_addr); + unsigned int r_server_local_addr_len = sizeof(r_server_local_addr); char * socket_buffer = (char *) malloc (r_server_local_addr_len) ; - - read (sockfd, socket_buffer,r_server_local_addr_len ); + int ridden; + ridden = read (sockfd, socket_buffer,r_server_local_addr_len ); + fprintf(stdout,"Ho letto la prima volta %d\n bytes",ridden); + ridden = read (sockfd, socket_buffer,r_server_local_addr_len ); + fprintf(stdout,"Ho letto la seconda volta %d\n bytes",ridden); memcpy (&r_server_local_addr,socket_buffer, r_server_local_addr_len); @@ -43,7 +46,7 @@ int main(int argc, char **argv) { inet_ntop(AF_INET, &(r_server_local_addr.sin_addr), buff, INET_ADDRSTRLEN);// get ip port = ntohs(r_server_local_addr.sin_port);// get port - fprintf (stdout,"%s%c%hi\n",buff,':',port); + fprintf (stdout,"%s%c%hu\n",buff,':',port); exit(0); diff --git a/7.client-server-print-ip-port-both/daytimecli.o b/7.client-server-print-ip-port-both/daytimecli.o index cbc2c8052dfd59722359f6d928e235929473ceeb..ce55f9803089d9f7ad00fe062c1a6c2c68c432b7 100644 GIT binary patch delta 1051 zcma)*OK1~89L8sxr>V`OwQ3?uww8#X>x0tzfRHEz7ByfG1@X`to5ToB6Pk^v7*e#A zZkIyhAc&`UPk!EwZ8C)q3hPrQX!Avv!RSO|I%lG>{t>BSSOlbLQ$ak1e5$2|X>ZWC*$Ay8; z%REl;c*a6!gB{!Q4O_}rM zmleHG)rV?|R+v<@pLqPFHhrzpXwW;R9#0lG%}HHP3w1@CPSLt4)E;lS$r6>!*NaL< z8cV1ut}!V)aWNf}E@j5lm=uURr1MwQM2@Vl$R$QIKp(gj+za9miayW< zZRPnd{2i8m198N}cVHLvV~{QI0q6v8gE$HDRgle_2HChIh^fRua65FcncIkbfECby zwYS(h?z3>5nDZezYq!vy7~6WA6{e9r=lML>Z@FIJ`Xkp>uFd?@c**r{u9ulMMv*6&c^-D3~B SPL1r#sT2Lg-~hc~7k>kV*2DP# delta 782 zcmYk4L1+^}6ozNg-K0_5WK-+XYKS7~$+ay3Z()N{7_drnCQy}@ZO8!Nm4vCUKC0N@g^vGw6`jy^q^1=8vmEhLLWT7{og`5N8|DGge@fjuwk+jUVpdx?Y{r#U@&K>PVQb$}5TQ+75aS z3|f&xPA)8jjaAKv5TC)5$O$Azw@&Unf$X6jIZOxAcpVR2mswS;ZSSHilt0#5t?jAR zxt1zU>e`z)TL|@J@&jAr#j$PWe;xO?uzrbtbzQLL+wFE|LTt14QTdN6G-SB;bWrs; zF2_>!&K#;3%XWG;T}+qCyqjYYqP%I#IF(H|D*mD!5uyz19+l~+770wjc4^DsyFbDFS40sy61mY_v2f-fbu=f98Z|wgB z@e6Jyzv00`VFTnBy#P;v&%i!#0p!6mAUAp-W+n6B8R)F`N7$#|;fssG6hBk%A} zLaZTs(HdN&b=L6iYX7CykF;)Ty{2`GHO>@Vmo2T&>kEp}A|?fGMy!ED-E#vqt_R`K rPQFXdvoRDSGZdq=$eL diff --git a/7.client-server-print-ip-port-both/daytimesrv.c b/7.client-server-print-ip-port-both/daytimesrv.c index b2fa3db..12c17fd 100644 --- a/7.client-server-print-ip-port-both/daytimesrv.c +++ b/7.client-server-print-ip-port-both/daytimesrv.c @@ -1,4 +1,4 @@ -/* stampa l'ip del client che si collega */ + #include "../basic.h" #include @@ -31,10 +31,10 @@ int main(int argc, char **argv) { } struct sockaddr_in client_addr; - int client_addr_len = sizeof(client_addr); + unsigned int client_addr_len = sizeof(client_addr); struct sockaddr_in server_local_addr; - int server_local_addr_len = sizeof(server_local_addr); + unsigned int server_local_addr_len = sizeof(server_local_addr); char * socket_buffer = (char *) malloc (server_local_addr_len) ; @@ -49,7 +49,7 @@ int main(int argc, char **argv) { inet_ntop(AF_INET, &(client_addr.sin_addr), buff, INET_ADDRSTRLEN);// get client ip port = ntohs(client_addr.sin_port);// get client port - fprintf (stdout,"%s%c%hi\n",buff,':',port); + fprintf (stdout,"%s%c%hu\n",buff,':',port); diff --git a/7.client-server-print-ip-port-both/daytimesrv.o b/7.client-server-print-ip-port-both/daytimesrv.o index 8d32205bf828f559c5ba0ec0dc6498bd8cff9184..e160c2ea49a5b74049148d48fd4d9d1c59d0a5ed 100644 GIT binary patch delta 190 zcmaDO^hRhyEHi7jYftC#$%)Jt*j<23m(F98O<9zo>_d}dSd`cw{rmr)U%p{-4@(_? zDHj70sGKax8qZicxsugBGmD9VL4bilHyTJw0cl4d%?+e^fV41>{>I3_AOxiE0%;xw z2HUehnvH=$_85=`D$(5rq(y-AG$1Vqq}zbB1dy%=(yTyrSwNZ>$PeDE$mY!q0EyEk AEC2ui delta 190 zcmaDO^hRhyEHjHoa&6D#B<2f1MrqGvOBQ7yBeZ97GK&)5i+}(Br-6VTzkCbB8U_k5JN0^eFOVO!S&_|~830Rx BBozPv diff --git a/7.client-server-print-ip-port-both/readme b/7.client-server-print-ip-port-both/readme index 1f85399..6177b8c 100644 --- a/7.client-server-print-ip-port-both/readme +++ b/7.client-server-print-ip-port-both/readme @@ -1,2 +1,2 @@ -il server attende una connessione dal client e stampa lip del client -il client si connette soltanto al server +il server attende una connessione dal client e stampa ip e porta del client +il client si connette al server e stampa ip e porta del server diff --git a/7.client-server-print-ip-port-both/server b/7.client-server-print-ip-port-both/server index 98f7cfa81a70e838f632a0b22e90aff519062fff..65d3aab96fb5539db3aaed12388f97c4fdbfcb4b 100755 GIT binary patch delta 301 zcmZ4Ey~cZk0;_=h{H+U2)GVF)7nn02+y3#-W&_q-7O!sCp3dVh8d(?^JUU$)JbFWy zc=Woi=&pU^(Ru8J2~fDx^@S}15b*cP0ZETu+YVL+h7AlaqJVPyK@y# z8K=C45KxqVd+jQZ&ejBw=r*t(QxBk?omOCW=mDQ@*87unxg_e3F@p>Y?eXX>ozPwT zqO&yytOX>x6UYJsp!@`n?%DyY>1?$CaovF2&Q=p3^CkPEfB*mU%QtL3!?l=&v2=3*zl|6GNdbpz delta 301 zcmZ4Ey~cZk0;@pyWBq*Z&4ydoGTNm2Y^XZF*?={d#nU6Xw&z6?3j>2kr)z^pZ|D+_ zUe^`fwQoE+kG(Jj3U|7`uw?)O{$4pC>CtQ3$;!a6f#F3oP;Ng+qO&#U|Ns9l6emCD zl-Cdjit=x-UFFf)ng9~r4%TDp3DmRG3d{~Y;M2|eV6q;UME!AQkb$8+9=)X#x@%u_ zw#I<9fJAo!SzrK^pWxA5+u)I0+T+o=H2^5+(Rt0Idn$<4+3Eu%Uql0S0QGxxmjaam zjq7Z600}RF3U{_zfVjRuZfC0rkooe(zyJT!(m2x6()9S{TNpN<;abeXn7O%t-$o1o DUA2WL diff --git a/7.client-server-printipclient/daytimecli.c b/7.client-server-printipclient/daytimecli.c index 92be990..af079ab 100644 --- a/7.client-server-printipclient/daytimecli.c +++ b/7.client-server-printipclient/daytimecli.c @@ -1,4 +1,3 @@ -/* Client che si collega a un server e basta */ #include "../basic.h" diff --git a/7.client-server-printipclient/daytimesrv.c b/7.client-server-printipclient/daytimesrv.c index f814bfd..81bbdb1 100644 --- a/7.client-server-printipclient/daytimesrv.c +++ b/7.client-server-printipclient/daytimesrv.c @@ -1,4 +1,3 @@ -/* stampa l'ip del client che si collega */ #include "../basic.h" #include diff --git a/7.client-server_recursive/client b/7.client-server_recursive/client new file mode 100755 index 0000000000000000000000000000000000000000..e225a2c7f124d0343df71baeff4ef2650edbf081 GIT binary patch literal 9200 zcmeHNZ)hCH6`!-MMwXrIsdZW>{o{=j1*ZjD?jP4_t#D4g^@`YyVp&N@F{?Xi&suW2 zyWZ{LKjd1gw%V+(m#9!e1EHu;C?vS(gNcF@962`9Q9^A>TB}7VhSGGeIG_)v$Z62^ z_uHL4olbGcr_vAm@XUL^H*em&c{8)xoAu=n-e0^;h{$RoPOK6_L{a)%gcubnBq8oX z(NPSeXZK$1Deb_c)GnvUa`=&mezsr$!#Jotd2qRj*PjD7lEjEjARO^2*=88FdDLDq zZ1xvz!(`C>-8H@qu@rs98garG{Ms<`b|I0ktD5~ieuwXGm$V3Q(4kfOTZ)hVj3G0X zHFGd(_V)|vFPH)`^IoSF@eSndoRvN-4VwM6Dt>%{KjKDO<{J%$QAi)L(u0PTPG&s3 zd_A6#{9T;Byt8*h=}^w7{B*e-ZqD~KD-riSP2+`?nmKx zD)K@8fW)1^q_3b*PfXt-g&7Dl5N6>2B?EoB^AG*x_1KK|AwzPC3%XO7A1N;I?}c)T zk6FFk^#?o)CxrVous1z3?H%`S0zN9wM^K%k+WiuAj&{9^Kq<@4ult?<4Ue+(7580$ zY3(no^pZBOmySl=DJYW81!eN4`yx7fj`ecitTH*Dbns96>pqxvm$I$;$XjqI+;Q~q z2YUWqU_{vuz3(vFifBh+AP0QgO#z(agIF(Xv!&v7-I;a|)I9{D?(jo>WT|Jx{b~T* zEs&V6q_cp47M023;)Q>iZ3a^c1~Cd^$x z?i_8wpTcwA-}7?UB@9t2EFk(BuX(;Y%}ysTMGsw6Htq4p$9kzw@dg&k9qIZhlL1nm zKY_YRQ7?aEl&Lt!Kg^_3@rGNZzZs|N`)C=dQLB{iMeWAWFtU?glvB5()@QT@Mp}Iu zpgI9*q-%39$Y@}JHc{=SdAVgH2Xk85@!no)`448$!v0PR-#PTs?Ki#V-(%evj_%y) zLJ>Q?T`%o-W6y5qcwR$ETfjusLl=|D7_mwyfUNBdHn{o zIsMz(HRa?>bYCu9<#gX!LeJd)3|i5hrC|Ch&qkE&ss6~H2LfrFK&|5}CR*!w)vI6gYVPt{#~WVF zM?|e-%B#5xY8{undK$G5`^sM&hOoQ0)^P}YY>3M0dl+emzecKal=v{I{*e-2>8ce< zUhdCR+DqM8N_~`GrWB_%PANm_1xi1p^fO3>eEhKaEp;${%(jNjft020!mlJNXB|JD z>F#+*-IdMc?D#`!o5*Jdo;GdO%;hq9jdeH~Y?z zl^Rq#236b44O{8BZ4S11r|}C2fYiuw0KNCouYA14r-<>7|NlPuM^S z6ghrCM2Ezb*NnCBG*5za+mQ`J&`2M+h}x z2Eq)483;2FW+2Q!n1L_@VFtnsgc%4k5N06E!2db}?VF=dam@A@Kc;yf!;J)PKJfAS zu^hhi<)ZB|10Q*L+d;SyFm7io$|_`e&q25a&^&6{lsh5UuSTfY2}Ks)vF#*L3@B&D z2Px~2{W}$+9-t#}%g$O}V0V!wJh259dtVGQ?h9s;m}c8&J*T1LG=h_$NHyX>oY9nEG5Kg@{FBwV1dI zM&rC-!sXM3iB+9F^O1RZ-SWZT*7Hh`*DCc37~0YO9ni$q`3+IxwLCq!(}XWK;XgIucbo8gP5AvL%-dH?&HLWVi%DE3310p&Lr9tUG|FdC z \n"); + exit(0); +} + if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ){ + printf("socket error\n"); + exit(0); +} + servaddr.sin_family = AF_INET; + servaddr.sin_port = htons(atoi(argv[2])); /* server port */ + + if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){ + printf("inet_pton error for %s\n", argv[1]); + exit(0); +} + if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){ + printf("connect error\n"); + exit(0); + } + exit(0); +} diff --git a/7.client-server_recursive/daytimecli.c~ b/7.client-server_recursive/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/7.client-server_recursive/daytimecli.c~ @@ -0,0 +1,31 @@ +/* Client che interroga un daytime server */ + +#include "../basic.h" + +int main(int argc, char **argv) { + int sockfd, n; + char recvline[MAXLINE + 1]; + struct sockaddr_in servaddr; + + if (argc != 3){ + printf("usage: daytimecli \n"); + exit(0); +} + if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ){ + printf("socket error\n"); + exit(0); +} + bzero(&servaddr, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_port = htons(atoi(argv[2])); /* server port */ + + if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){ + printf("inet_pton error for %s\n", argv[1]); + exit(0); +} + if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){ + printf("connect error\n"); + exit(0); + } + exit(0); +} diff --git a/7.client-server_recursive/daytimecli.o b/7.client-server_recursive/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..cdebe67422f1ad47d8e81e46577771a0fe4f96a6 GIT binary patch literal 1672 zcmb7E-%Aux6uxVg>!v$PBowtU^y{e=EvOI^BZo$?lvL;XY&oTqcHW0+II(U>pH!$mwzFIH!w+?ogZtgNl2T|Q&Z8s;SDLj$!S9$t#N z`h{~9`TUgo856m7q~u(m<{3xJ>cN7>`YIydw8$65d)AkDkg+i2D=7I9j0EoetKL`j;b#AP3Ki9xDbE)wRGjqa7-n_xGKF5S?*y-D z@|2GOp{-xht1Xe+_j$^uua_40T>QZot|*_H)S^;Wi}{4_$au?AX=^*Nx;VZemC6|p zKjrffq=Q8}s?NW~*#&zA8$CG*E~*R?+R>fWuK7uq624B^C>AzVZ^ifhtJKw?94riW zr1Q#n6%n3x2ROQUR~abwywi1mEKIeo5^WYdXGG*-FJ*R~v2>yu+FXQl7zuBMplk%M2WH#&YD-xfn}Zrm3fEGAd=;x`MtE z-L=cl=xAWO;)er2i_G0*k$fVOXlsc+h3XXi$1%SD{^Og-&)AiC;&Ic}_OQoDH-J&D z20F3NF5Ow=M9-#92>AnCdz6L}KCaJI5z@GupY^enxdObA@ zB>f#A>C-@@Ox^&-!FxnJCE{m*u%wI$I{!5Y`@!Q#9Nr(-1TP>+HjF{FhUYLr9QvY& z)8C!=bHTI3@nYfso$4fh2^unzNkU8fB5}mS`!oq&7iOIeobH19IGuYvr#qpZcQkOu zvzlQtZsRU>GmPtb!(}{ZM8-AOG8nHlBEu!=_g=87Q=eu-yc74ZfNost!=t0KnmuT` V-4}%SoWS!;QG+Y7Yp0I#`~?Go0iyr_ literal 0 HcmV?d00001 diff --git a/7.client-server_recursive/daytimesrv.c b/7.client-server_recursive/daytimesrv.c new file mode 100644 index 0000000..aa7ea6f --- /dev/null +++ b/7.client-server_recursive/daytimesrv.c @@ -0,0 +1,66 @@ + +#include "../basic.h" +#include + +int main(int argc, char **argv) { + + + int listenfd, connfd, n; + struct sockaddr_in servaddr; + char buff[INET_ADDRSTRLEN]; + short port; + + if (argc != 2 ){ + printf("usage: daytimesrv \n"); + exit(0); +} + if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ + printf("socket error\n"); + exit(0); +} + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* wildcard address */ + servaddr.sin_port = htons(atoi(argv[1])); /* server port */ + + if( (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0){ + printf("bind error\n"); exit(0); +} + if( listen(listenfd, 5) < 0 ) + { printf("listen error\n"); + exit(0); + } + + struct sockaddr_in client_addr; + unsigned int client_addr_len = sizeof(client_addr); + + for ( ; ; ) { + if( (connfd = accept(listenfd, (struct sockaddr *) &client_addr, &client_addr_len)) < 0) + { printf("accept error\n"); + exit(0); + } + + int split = fork(); + + if ( split < 0) { + printf("fork for iterative server failed\n"); + exit(-1); + } + + if (split == 0){ + close(listenfd); + + inet_ntop(AF_INET, &(client_addr.sin_addr), buff, INET_ADDRSTRLEN); // get client address + port = ntohs(client_addr.sin_port);// get client port + fprintf (stdout,"%s%c%hu\n",buff,':',port); + exit(0); + + } else { + + printf("connection managed by a child process\n"); + close(connfd); + } + + + + } +} diff --git a/7.client-server_recursive/daytimesrv.c~ b/7.client-server_recursive/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/7.client-server_recursive/daytimesrv.c~ @@ -0,0 +1,41 @@ +/* stampa l'ip del client */ + +#include "../basic.h" +#include + +int main(int argc, char **argv) { + int listenfd, connfd, n; + struct sockaddr_in servaddr; + char buff[MAXLINE]; + time_t ticks; + + if (argc != 2 ){ + printf("usage: daytimesrv \n"); + exit(0); +} + if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ + printf("socket error\n"); + exit(0); +} + bzero(&servaddr, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* wildcard address */ + servaddr.sin_port = htons(atoi(argv[1])); /* server port */ + + if( (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0){ + printf("bind error\n"); exit(0); +} + if( listen(listenfd, 5) < 0 ) + { printf("listen error\n"); + exit(0); +} + for ( ; ; ) { + if( (connfd = accept(listenfd, (struct sockaddr *) NULL, NULL)) < 0) + { printf("accept error\n"); exit(0);} else { + } + + n=read(connfd, buff, MAXLINE); + fprintf (stdout,%s\n,buff); + close(connfd); + } +} diff --git a/7.client-server_recursive/daytimesrv.o b/7.client-server_recursive/daytimesrv.o new file mode 100644 index 0000000000000000000000000000000000000000..dc5a1136e1a5057184db7fdcfeeac65a1dbcc812 GIT binary patch literal 2384 zcmb7GU1%It6h4X3u4|h~{Eg`1K#U-g(5UgJSdEy`DMb8f0u_|&bau8Gnw?o@W|K`} z#Xuq%whKjlh^P=~k)kgFh1dxBK}?`8H6r4Z;)66|ggmCDCVpq;PMWMO)kE(6?sxv~ z*)#Xf>PQ!AYmvWFy>9SiA!}Yib9sPGx4td zXY{Ie7QuSB6j?%T^+vm%j2xx+)M$AM+tW2Wu>}dWiO4na8z0$G?L7DPoGfJlO*pHM zF7d$*wXrBlnJIs+hvOwAinw0wf|br4z@%6E7kVrF<7vBfbB8KV^(gb&+^#1%9$byz z`J5}|)o{F!*uwEaEdRK;xwVzcbtn&vac1K46F-(s6tlT_F{RAByt#NOb?XJFm6?UN zzAgI3G3$VuHAVtEZ~5Mk`b@#~0^`{<`L21~3RKJUTrW*WaSxOApzQ~ilQ6?Ht-`in z&h?I~m{dEkJR`7&EY-KXAj;Mxe z4%mZPwcxp?<@@RAm&8*Sw>*9|#tJ!i$NKo)bPfBR(y#8s>r_{2s%zT2Cv^(9;z8)| z$C$i==0RkBqURf%-m8CMAFg*K?AL=ajrOv%#_E6hJ%l=%iP~F$_W+xLDWXgocsuxI z?1@_1e*@y3aBu~P_j2Yu5H9Vrz`KAS0XfeYkmH7doUZ^xO_?`5yMakcRj-`yz2*>2PR+z(fQrbU| zd{Xj{CI3wF(~^HB`4^J^B>9(;|0?-6%+Z+SJMf+46KDntN+E?ODHc$H|J%~ezki3B zI%{~QhPT%6=V~~5y({0-HT=yQ{$dU1zVEDuzx_Ko&e$$aB5&9Zi2}aiL5_q~vI7$F z{U>1ru1$jPKZ*F}Ll@n75`5c9n1ilwk+2;r5KiD0@BtTokaddzmboM=@6llmP_O8~ ue+v>i;rq(r!^1}5kP~!1A+?W6d`#lw61yZOeovC7#~=3nyYuiqME?M=ilPGm literal 0 HcmV?d00001 diff --git a/7.client-server_recursive/makefile b/7.client-server_recursive/makefile new file mode 100644 index 0000000..16fdd6d --- /dev/null +++ b/7.client-server_recursive/makefile @@ -0,0 +1,9 @@ +all : server client +server : daytimesrv.o ../fun-corso-reti.o + gcc -o server daytimesrv.o ../fun-corso-reti.o +client : daytimecli.o ../fun-corso-reti.o + gcc -o client daytimecli.o ../fun-corso-reti.o +daytimesrv.o : daytimesrv.c ../basic.h + gcc -c -o daytimesrv.o daytimesrv.c +fun-corso-reti.o : ../fun-corso-reti.c ../basic.h + gcc -c -o ../fun-corso-reti.o ../fun-corso-reti.c diff --git a/7.client-server_recursive/makefile~ b/7.client-server_recursive/makefile~ new file mode 100644 index 0000000..ed76715 --- /dev/null +++ b/7.client-server_recursive/makefile~ @@ -0,0 +1,8 @@ +server : daytimesrv.o ../fun-corso-reti.o + gcc -o server daytimesrv.o ../fun-corso-reti.o +client : daytimecli.o ../fun-corso-reti.o + gcc -o client daytimecli.o ../fun-corso-reti.o +daytimesrv.o : daytimesrv.c ../basic.h + gcc -c -o daytimesrv.o daytimesrv.c +fun-corso-reti.o : ../fun-corso-reti.c ../basic.h + gcc -c -o ../fun-corso-reti.o ../fun-corso-reti.c diff --git a/7.client-server_recursive/readme b/7.client-server_recursive/readme new file mode 100644 index 0000000..79f5a9a --- /dev/null +++ b/7.client-server_recursive/readme @@ -0,0 +1,3 @@ +il server attende una connessione dal client e stampa lip del client +il server non blocca poiché e’ attivo in modo ricorsivo +il client si connette soltanto al server diff --git a/7.client-server_recursive/readme~ b/7.client-server_recursive/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/7.client-server_recursive/server b/7.client-server_recursive/server new file mode 100755 index 0000000000000000000000000000000000000000..3884bd8a5986b1d3077759183164bda246764a58 GIT binary patch literal 9476 zcmeHNeQXrR6`zakVhrJqHX&{aVngBxS{01aL=LGdL%m|H0&y{>2$d}Nv1hM1-(Bza zjE!`y4{+q=;>4{`RHO0RQB~tffNZ>LKTgavL`u`E78_Lsome3 zo%QXl3xDLV{&6Gbz4x1W^XAQ)4=*$K&b<#7S25X(Oe_yM%(*-n6jy3sFzloyu&ZLRB;IlX^U&>hWlT&&&P#$#%_zbBN4sYxSsUwe)jTKI0iXg=LTSJkeBYuT-^7eIUR56g`w!d`pp zMIA9!jRha%U%jx`C)yBp+oOH)Nl`~kRYU30Dqb1C5n->M2hncm#EOusm{*qe{l2yX zUy)neoINXf<^h;ewb*aum)q7BoGXo_Alb301?QN`keVdMu7TG+fxQY&>$M(v6nG=} zjVGZGgKHqSBU2*3DbpO)A-m%WSeDw+9;Q|#+9ne6TI3y>bZSRT5ABHb$0ER#sBiLP z-5+lJRDtI;#^XB|vsNLw*pYDedeJ5fJP$W%vT^!a{@ zA^1vtqyLWnw4wEE-?JTl=piT}J&jEL^QseJh|H6KomajiFBi|rhB`?n_`Mz4~k0_6tSN!82T0el<3EE}K zaORqSd?9M$pZsn@Asi#d;jT+QhX-bJA)`b$Wr zJY>z`4~e5U*e|@jjzS*WOTv{Y1mS{`n?_5xan>q8!9Sk8sF;I&Fl5o!jWYb~UDRLN z#pTYaefgSSqQm9TO}6EmTK$*hNw{#DI)ENC2MuZ;1;#v6{7~Bql+Rk`V3O)ufy}`e z#NwUBrKM>>r;xc6G#^_bUE>^9TYu=0TQu4nx09qswQIS!qOgMiD^Vz%B_sHIi*}M@oxg}Eb4?hWNwV)!` zgnqI1@v+I28F_&`EuH`73 zw@81<{ey6g6+4JL50cByf}(gc2fRN|44y+xaSO@lKfLmz5W$Wucn|Ze*dhp?TTW8*|4Da2o{Rpvc~~O+yhu@*oRfL)Np{) zc1{m+dWh4*oF3uyD5qcN^d(M@a~k3_!fBM#ZqR+hoBoCv?(SG>xDGzj&0YUHyy&LS zE|RJAn77W^xvuCC`md=uak6&q*q89BIz_quaiW_ zP4^E;ijy=(QiP-_l8!>kq=Q}BE-4c1H}oDYo$8gom`tRM;Fs!HIuSmh8IqPtB~o=P zg#Y?Da!kkPR@_0sa9B$&>qQf(6B3A|8(J!8=)Ibh)>6G%N{R;cm=>vH4e5q(LwBZ* zg%k0(7B=)mTDb#0+k4S>-|bE-h{7>9DSzO7w(ujqOQkhOV-` zbX8Nu<^v$NAH~}q@BM2h$#9%?Rk5)Rz8KtRp(-|752caMP;Y23Ro&P=@0%BwIQRa# zmaabO8b_3nmi<<^4kcr_9;J!^@;b=QdoEpe5*|eb)i*g9kD`S4A^UyQ%ErgR{iwJt z?0rLE=XVn)1#Vnp>z@`_!UHDR`?kOV+(;3A6B(RDo_-AK#&3J@ga=P~Fz#o|+W*Oe z|Lnnk@!pulf zlZ>UpHXuKSOz*bz{$Q^R)`HOUcWrtz{y26d{2JiJj*gSTWLwz8I_yKkJ}$&TVIL9p h;jnxxxDEv8C~yt|K2GLr{N)|5^4{5sLk%Hj{{`467yAGJ literal 0 HcmV?d00001 diff --git a/8.client-server-echo/echocli.c b/9.client-server-echo/echocli.c similarity index 100% rename from 8.client-server-echo/echocli.c rename to 9.client-server-echo/echocli.c diff --git a/8.client-server-echo/echosrv.c b/9.client-server-echo/echosrv.c similarity index 100% rename from 8.client-server-echo/echosrv.c rename to 9.client-server-echo/echosrv.c diff --git a/8.client-server-echo/echosrv.c~ b/9.client-server-echo/echosrv.c~ similarity index 100% rename from 8.client-server-echo/echosrv.c~ rename to 9.client-server-echo/echosrv.c~ diff --git a/8.client-server-echo/echosrv.o b/9.client-server-echo/echosrv.o similarity index 100% rename from 8.client-server-echo/echosrv.o rename to 9.client-server-echo/echosrv.o diff --git a/8.client-server-echo/makefile b/9.client-server-echo/makefile similarity index 100% rename from 8.client-server-echo/makefile rename to 9.client-server-echo/makefile diff --git a/8.client-server-echo/makefile~ b/9.client-server-echo/makefile~ similarity index 100% rename from 8.client-server-echo/makefile~ rename to 9.client-server-echo/makefile~ diff --git a/8.client-server-echo/server b/9.client-server-echo/server similarity index 100% rename from 8.client-server-echo/server rename to 9.client-server-echo/server