From 099d09b73c6884cbb6121d50d3e8df2ca25248ea Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Sat, 17 May 2014 21:18:32 +0200 Subject: [PATCH] implementato alcuni verifiche di errori. il file 11 e' incompleto e riguarda l'errore nel caso in cui un client legga da socket e il server e' terminato prematuramente --- .../client | Bin 0 -> 9200 bytes .../daytimecli.c | 28 ++++++ .../daytimecli.c~ | 31 ++++++ .../daytimecli.o | Bin 0 -> 1672 bytes .../daytimesrv.c | 89 ++++++++++++++++++ .../daytimesrv.c~ | 41 ++++++++ .../daytimesrv.o | Bin 0 -> 2940 bytes .../makefile | 9 ++ .../makefile~ | 8 ++ .../readme | 4 + .../readme~ | 0 .../server | Bin 0 -> 9572 bytes 11.client-server-print-ip-port-bothv2/client | Bin 0 -> 9556 bytes .../daytimecli.c | 76 +++++++++++++++ .../daytimecli.c~ | 31 ++++++ .../daytimecli.o | Bin 0 -> 3076 bytes .../daytimesrv.c | 63 +++++++++++++ .../daytimesrv.c~ | 41 ++++++++ .../daytimesrv.o | Bin 0 -> 2412 bytes .../makefile | 9 ++ .../makefile~ | 8 ++ 11.client-server-print-ip-port-bothv2/readme | 5 + 11.client-server-print-ip-port-bothv2/readme~ | 0 11.client-server-print-ip-port-bothv2/server | Bin 0 -> 9644 bytes 7.client-server-print-ip-port-both/client | Bin 9508 -> 9508 bytes .../daytimecli.c | 4 +- .../daytimecli.o | Bin 2436 -> 2276 bytes extra/da_vedere | 5 + 28 files changed, 449 insertions(+), 3 deletions(-) create mode 100755 10.client-server_recursive_kill_zombies_plus_err_accept/client create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/daytimecli.c create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/daytimecli.c~ create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/daytimecli.o create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.c create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.c~ create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.o create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/makefile create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/makefile~ create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/readme create mode 100644 10.client-server_recursive_kill_zombies_plus_err_accept/readme~ create mode 100755 10.client-server_recursive_kill_zombies_plus_err_accept/server create mode 100755 11.client-server-print-ip-port-bothv2/client create mode 100644 11.client-server-print-ip-port-bothv2/daytimecli.c create mode 100644 11.client-server-print-ip-port-bothv2/daytimecli.c~ create mode 100644 11.client-server-print-ip-port-bothv2/daytimecli.o create mode 100644 11.client-server-print-ip-port-bothv2/daytimesrv.c create mode 100644 11.client-server-print-ip-port-bothv2/daytimesrv.c~ create mode 100644 11.client-server-print-ip-port-bothv2/daytimesrv.o create mode 100644 11.client-server-print-ip-port-bothv2/makefile create mode 100644 11.client-server-print-ip-port-bothv2/makefile~ create mode 100644 11.client-server-print-ip-port-bothv2/readme create mode 100644 11.client-server-print-ip-port-bothv2/readme~ create mode 100755 11.client-server-print-ip-port-bothv2/server diff --git a/10.client-server_recursive_kill_zombies_plus_err_accept/client b/10.client-server_recursive_kill_zombies_plus_err_accept/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/10.client-server_recursive_kill_zombies_plus_err_accept/daytimecli.c~ b/10.client-server_recursive_kill_zombies_plus_err_accept/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/10.client-server_recursive_kill_zombies_plus_err_accept/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/10.client-server_recursive_kill_zombies_plus_err_accept/daytimecli.o b/10.client-server_recursive_kill_zombies_plus_err_accept/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/10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.c b/10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.c new file mode 100644 index 0000000..4f55200 --- /dev/null +++ b/10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.c @@ -0,0 +1,89 @@ + +#include "../basic.h" +#include + + + +void sigchldaction (int signal){ + + int status, pid; + + for (pid = waitpid(-1,&status,WNOHANG);pid > 0;pid = waitpid(-1,&status,WNOHANG)){ + fprintf(stdout,"Server:Child %d terminated\n",pid); + } + + +} + +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); + + struct sigaction sigchldstructure; + sigchldstructure.sa_handler = sigchldaction; + sigchldstructure.sa_flags = 0; + + sigaction (SIGCHLD, &sigchldstructure, NULL); + + for ( ; ; ) { + if( (connfd = accept(listenfd, (struct sockaddr *) &client_addr, &client_addr_len)) < 0) + { + if(errno == EINTR || errno==ECONNABORTED) + continue; + printf("accept error\n"); + exit(1); + + } + + 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/10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.c~ b/10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/10.client-server_recursive_kill_zombies_plus_err_accept/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/10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.o b/10.client-server_recursive_kill_zombies_plus_err_accept/daytimesrv.o new file mode 100644 index 0000000000000000000000000000000000000000..95d195e96585d15c737982eeb2337393484e3280 GIT binary patch literal 2940 zcmb7GU1%It6uybE-KK43>;F&Jj@XC~Zn4H{j8-ho-~_4_n?OLzbh`vNL zy4cWc>9AdiK2=aD*oPtt1(nzc`LWVGh_)3GeCR_#G0_N7@{njr{LY;-X?D^g9`??6 zzk7b}x#!-wI~V`{V}7L&b+-sS&9Vvffz=j=oakUJ{}0i3*wBhe*3L~r;nWO z;vnKV*}R!>jh@^=JC`(!9qo%sbY?lPJvo`5b2;#NWt$x%VWL`z&(vZtjE57l zh+gfP9iq+mO4q#c35w-uGkv8Q>M3tMji+ASLPW2~`s$U|O4rO;!KTwAHBo{9lS35y z=-1KR=Lh6`eN$%ea2J;=poGJ?*%RH$qm!l;jYZ z@ElXpUa8*HxnCMy&@R`HYd?^qUeTuYN^eAtr@S#`a87oIsFEneC1r3n<>9A&UnxyV z)ql-#L|P3~WkN0w$e7F5R6dN#NUxDQ{AmYtxhxPQA!|IYot7zi+Q7K>9x0@QSMH^% zR=ZB?RqYJs)4dD6LYv@3wZOKom5zwgzwY_~?V?hq2_|XlLj{*-pzH?8aoiJqr4w)v zO7#Zof$f4<&Ic}mY56c5f@;XUJLea;YZOI3qxW5))Vy*ga8w3MAL(9sPr&)Wooj;` zRy(@GKY5G0Gu%;WZC6IL;hMuze(k#d(y~`d6JEJH(0S!fbSDSr7Z#Ka{g^-qI-mZw z&m)uhv0o#~;EVHPbCFdSF{})Z?moZEDjcv1ZQIj!CaE?jRo5zH?VRaa$wtvrH1}C; zYSKL9+F7euIG{e8cM7igT%#yDiT#$VT7`mBXcT*K=LG$XU39Hnz|2I#$}ifboWgz; z57ovrrfVOt)S{eUO__Fvrfe=YCz{hejUwUXa#q5%ot&CAbI2p9?meWMYCxcKjby z9>Vhrv8^e3tbY4iT#Hi3t{v?X+i@N@w9CLw#~zY!KFjRpu#P*0i2n}6B@zD_xJroF z72sXq-vV*p#yGP~7Ke7n~XQ+m!L%buzcZT?zA^uE=9}4k}A$}~xyF#4yb!on||4aF{5XV`r(F>z! z?@OdJNqk!2CKAR$({}TA5+8s@(M>u%ZeAFvJig@IlrXZU4U>Rby|xQ~c~1(%bRAn5 zbWaMyzaeGpAg+H+QdoJTA}DT3VI(q6(GrH8vs@$RI+&~`pG{WUpOrd0j7|8aWZ2C3 pI705+wd*#<+wvq)AK)#pZ zHqG7Jp49j2&pgG}`6)0Tekh`z^%%f3_vrif%omaUIdExG7`6$RBR-~hrs-JS&YWPm zz9c6D_Bz#p_})2jf}T=nnrSD~o}O(g*LU`QUtgP&DB@y=Dy47EKI$_&tyt1ZL8x5c zl+rh-6cE$zvuS~Sk+hSt;|G*LxxVvDef!>3eB#nHPd6B*nTa2^<5AO&cO)d9zaGaz zzCNxw6Y)nS)3iFxj#RkI@}E{YfW@0`+CE1l?fEc%M5q**fO_Wh3L zU0>C=Hy8J;R<;hnOi^x9B-&M~YYonodNMTMH&v)5W*bt2Cd4@E+D}6eHRH7w`4aFd z)GHsw`2&R?2fZ7aiFPw{EVh^W6>we}SStkn79?&H4S5Ojrc64uDQ35CiXMqYftfyu zOgkQncCBb!TfgDQ&qx0e8+pGO=J;{3xLOG0&lE9gruCQx`;F7MlEiTukjdj51A#X% zg}~g{7{BF6+OfJeKCuyY*zFKPT8E6K6R*G@tT!lp9+>H~$ZRL3?n?Uq_CTxQzGs}c zRr9MEB%?nwbs+$Q-RvEA#M_TU$JHlu*-6eJbmsFYjs7hGgp!dDw&Q3q@(uac$wA=- zrRc=Pd0M;`zJkI9>OS$Cn&;jgkmKcU4MNq3eusM9?3CeVCUV&+#$o6rBi-n49710x z9>zYtD8=+X@4Ez)8m5sK*zEljZLWT+ks#EsI)BgaoSW->(%TDgMStg>5nX;Z8F_ue z$ahzHpF?|xdpR_8+na&f3yfYk;#z2Es>8*fem$SP5K{4u`lkFjcQj2`dr*h92f zu*<&yRF_XlosG4Am%o7F&#CtqJmdYE_!IuH1BRRy0E`HJeR^hQM1M`1`j5!) zet`~dZ#TW#-};)-ub;id2_3zTQBX%2R-1~)fsNi zH*61G)Q4fn3mgM-(Dya=j{sw49)B> z!;3*RA%;s+asOb)T!b!ep-H)gypHU!UM%>0{!O6|AHPpWrrPl;TF#z!8P8cKl6fG?r1SkxG$~CSj4$@nc08bQ}Dc&Ef z!W+T7TYwFv~@gyU!Phq0k zb8mNabZjj3H|E=<=4-gE<3_&KLp?g8kI8-!ea!fRJ{~&3;D>*2aJuhe%`n~U%^Wu^ zLU}XFQ~C`II%>Fc#M_rc@f6xN`a z_1mLtK^A#^EXcuKeXOt-9>I|^dIf?s7%LCR2{&=V|H*tY?{Uogrct!&MSg+8WQ}}g z6wI66RbXhoX81w%Qa!NOhC;1x(ei6(5{2SYaGj+!hMKg8Zlx2@BkIV9;EMJsmpDa(w^0X|^$Z|lI-;w3ZvOFuxS7iAE zltS$2U$q#-ww9T?+wkc?CmRdz!hq0O{$O7aZ+bV@j&hT38^@#pOK1^dW+P4QrAiC2GwGv4q2(KU+J`C zQLQejIaaF6j)xs9S}ii^@BwS977ZV9>@F*vI;4FunMgU|FI9_lB684jG%J-#q^dp@ck=?2h|SR!o^Gyz!MwnN$g&081JyGbYU=IwM4?gO;r zmSe`9M3N0{Xz*`uh&qAhgp)uiD=Y`=2A#GKgyroFMSB8lkvBqweT0X@wv)7_{D8zM z-1&ej0w#WU5H!0wVWSnvI2PXY!*qiIosrI1RO#K(6}IEz=>t~UvC|RTJeufgw=J>1TzWl?e zNX40j literal 0 HcmV?d00001 diff --git a/11.client-server-print-ip-port-bothv2/client b/11.client-server-print-ip-port-bothv2/client new file mode 100755 index 0000000000000000000000000000000000000000..4d7c7e014a7ada1a74209c84f6f07311f69d5640 GIT binary patch literal 9556 zcmeHNYiwM_6`oDvU`)aqN=l&6Tpk8PRmVnv%){V7uDFJzaY+o6mR_%S@5Z;;S9k9= zaayb1Ca!#0T-*u@5(uSLt5#JXZk3XdA9+9&TdAr<6)0|%BL2|ct=!6@X=|d$?)S}| zwXb&@ezZTkBhSqF&YW}R%$dioXZF?5&kS^cBmoA_}l&|^gvg-gdR>cr6!<#S zt8T{m1A~`=?nY*!-^`q&2IOE|0hgqqn}on$RpK_$kXIqE&*!r16L#PF*gzr%%=8Il z`r$SIVrt!)wpYG)<2O*?ekQ3%qZ$JMsZi8cMy!Ydn|n5 zL$8SbWS_=p&s6xpOx(qv{)bHv?J8#Kjl!E;>fR5a;rsABmoouBv=Z$<>Fvg8;5RUKr#Yi}0`?j=P$rUfumtuN_Kp$_;;Qety36 zNeH6r>wS@H7DOJFBD)|`b{0c^)9WUC!X4aS7~C)W7{#upfq!t=#kwhJhkY!A`VJqMjl1~MU+XHiZww#NUxUkA z*a_s|%onJC4{$u*5?;5LOu_x*E6t&oxnqB>4hsf*&Hbt7ms+`0lnTCCdvP)B{Y zu9y7cYMaySp2SY&xD9vBQ($yH+h!Cudz~X~>`yin^;ry5d*-cpMZ7WIPBmV`?Rn2A z_IRi#C-k#YFRGt4?$h53?|D_alRv}ZzC8yIutui}^ArjXx1oGiKZ8yugU<9!j)cO8 z^JfZk{G<#IbD*WIEbc*37@R^0_BshF5s2(X4DXoox_y%5w09Je~3xT0EWAnsN;ynogyx=z^G$ z))JQEpp0mlteuQ#Ur8sNh}IO-`UV^e3PFjS1@&09OxLYREtjyY4E}$TJ>Ag?(FQ?& zzm>JLNZhfq+8wPL*|&-(BRi~^md|K?7W}dn8+1BvX|a4Zl5#9MMel%?`T=9RtG#H- zHAS2H^9|zRemfE45FnSdQxV6CHOM23Uv!y*H5P&V5_u#!UReP%b zK-Cviy;A+Z+NkPlReiInTU1@`QH@iJKrI5b2-G4_i$E;`wFuNAP>Vn<0<{R#B2bG! zEdu{-1g^MoZ7;8*ujn-S6dp_Gos9TwwsEYJk74q0-0Z{64j!|IJly-p6dDuRwNgXg z>Igth!ladqW(Le?{|@q+!HYO)n{+E^b;m>44ruMN9nzhk6qNn`y$i?%XASt}Bw+%C}aGKgR(L?myf2uBEaMr%f;B5Py)jheapqr)exHTU-3?_KDx5CdnPo) zOBkf{@2=w2Ew6DDhg|oI|=FA+xO zY+!oiyEfnWIq7SVKaPAgGFJ%SQ?5nkgCtTX-VC!HB zbHTQ-Frz7_ir1HqSMmJcTU759vvQAM7h~%zb`v1wp72}LUcvd~pEe)@=S<+(@(-JZ tW5z#V7LJy{q2iPBI4K__ls<{7BT~+V_%}>6zVHA5 literal 0 HcmV?d00001 diff --git a/11.client-server-print-ip-port-bothv2/daytimecli.c b/11.client-server-print-ip-port-bothv2/daytimecli.c new file mode 100644 index 0000000..8de041f --- /dev/null +++ b/11.client-server-print-ip-port-bothv2/daytimecli.c @@ -0,0 +1,76 @@ + + +#include "../basic.h" +#include + +int main(int argc, char **argv) { + int sockfd; + 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); + } + + struct sockaddr_in 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) ; + int ridden; + ridden = read (sockfd, socket_buffer,r_server_local_addr_len ); + fprintf(stdout,"Ho letto la prima volta %d bytes\n",ridden); + ridden = read (sockfd, socket_buffer,r_server_local_addr_len ); + fprintf(stdout,"Ho letto la seconda volta %d bytes\n",ridden); + + + fprintf(stdout,"I'm sleeping for 20sec\n"); + int left = sleep(20); + if (left == 0){ + fprintf(stdout,"I'm here after 20 sec\n'"); + }else{ + fprintf(stdout,"Waked up before 20 sec\n'"); + } + + + ridden = read (sockfd, socket_buffer,r_server_local_addr_len ); + if (ridden < 0){ + fprintf(stdout,"Errore durante la lettura\n"); + exit(-1); + } else { + fprintf(stdout,"Ho letto la terza volta %d bytes\n",ridden); + } + + + + + + memcpy (&r_server_local_addr,socket_buffer, r_server_local_addr_len); + + + char buff[INET_ADDRSTRLEN]; + short port; + + 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%hu\n",buff,':',port); + + + exit(0); +} diff --git a/11.client-server-print-ip-port-bothv2/daytimecli.c~ b/11.client-server-print-ip-port-bothv2/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/11.client-server-print-ip-port-bothv2/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/11.client-server-print-ip-port-bothv2/daytimecli.o b/11.client-server-print-ip-port-bothv2/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..99bd1efecb6e8f8306de61c792626f101791f559 GIT binary patch literal 3076 zcmb7GU2GIp6ut$7rDCTlDk3XmutB3sTK=qrpBg)HnzRvwMjj;NuzQ!?u)DL_orTi4 zh9)dwTvjpBL^L7zqP&T*$pSIdVnYcpJQ=GmMxy}@ChJ?Pru92_&Xn#p7`@p$-+bqM z=iGDe+`Th5{``GHM-H!(H=!VLHsVQ>mJ|Hy1>VPBd4Ig$Tthia^--_ z1YlWvjJvWkvIDE}1#NhQ@qBo{e04p6d+ax!i!F zo~V<~+ELdkWDX}YG0W=ho^|5p1D;418_zA~wF(Krx$06{mP}ajoSl|_Kx2IqoG-!o zZgD=Q;$9&FmoicE6?C^$h}D2vvk=QMH|WGpvZHC-Nqawf3;O?U{igSeIduCx;>L}? zDcUPenqHwcRGg$oqaAw;SF^H>T<66tf)ToS#s@y3(J#}gUm~-zdB$y}*D7}neoqN6 zQ;2z~l>p7G7!#&9u3T4*?-rP4qh^)|T9qO0jcU~?bvr_1nw9v7RcU`H>$|i_}S$>GX8}<5z&GMFV|1cLbH^4Ja{HK`NoIJZ7o^dRg+j1Jk zII8k^#`&QlJ!7Gj{N>!aiP{QEfc|}BZNxYetR>CLE4>!P$K&g? z)yK#v=>OvfO=Fbl(VHQy+BZEq6WL)t9Jo{%}I z+i_Rs^!4pJnb(R}?SnF=7qa?(iMr$+he5?lJyyus8COzKR2^7-9Y{7fzlyeeTeK}v zz*!fxP5%2~-W#dQw+q_MX!HEE`>8bzz9O0iTANyzEeV~1>PgsEp@;s$!$jl!LcGw@ zdVIl)_u*Jpjdb1U`n0d(apvhdPzV0dktcu;14FNClD-7Q*&coqNcl4CkFkFr5X%zo2BQ8*g#BySzY2&~MYx&mG$`er!kj~} z{{##p?i(PDdkskbQ6OHq;Y(~k$M%nbSc~w7KpO8j`(5^@f%wye zQiXQ`aa={{03?4q`=17)g>_t@Q;(JKE$|i$5PUDZ%e;ajsGUY{fiT!#pAv`uBldsB z{0rt)=2w{0yOH!iGaqLj!Xi++flhv%`M1nFng76i7xSCUQ_O43-)2th*n<1u`(hz# zC%!_RX#O8VgDq%7xY6LRaeM-Nj$8CK@U{lNxq)j9d~X9k)WDx<;5!;P_Gn!_*qe3y zr3P*{aO{CPy|B`DG9xUUj2SmBEIE*Lh26xQs4EAVls&RB|0rJSg+ za?+0BqtVK{F{j{Wg%uAns#B9(NEXc=v7(8CoGRlw5YqVTWJ2^>>+l83(1C!Lcke!I rXL~Yk$7Z&!XWYQJk#Q4apnHyaC*$*s9qqwQhcHb4bF{sFB&y^eARtIN literal 0 HcmV?d00001 diff --git a/11.client-server-print-ip-port-bothv2/daytimesrv.c b/11.client-server-print-ip-port-bothv2/daytimesrv.c new file mode 100644 index 0000000..12c17fd --- /dev/null +++ b/11.client-server-print-ip-port-bothv2/daytimesrv.c @@ -0,0 +1,63 @@ + + +#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); +} + 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); + } + + struct sockaddr_in client_addr; + unsigned int client_addr_len = sizeof(client_addr); + + struct sockaddr_in server_local_addr; + unsigned int server_local_addr_len = sizeof(server_local_addr); + + char * socket_buffer = (char *) malloc (server_local_addr_len) ; + + + + for ( ; ; ) { + if( (connfd = accept(listenfd, (struct sockaddr *) &client_addr, &client_addr_len)) < 0) + { printf("accept error\n"); + exit(0); + } + + 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%hu\n",buff,':',port); + + + + getsockname (connfd, (struct sockaddr *) &server_local_addr, &server_local_addr_len); + memcpy (socket_buffer, &server_local_addr, server_local_addr_len); + write (connfd,socket_buffer, server_local_addr_len); + + + close(connfd); + } +} diff --git a/11.client-server-print-ip-port-bothv2/daytimesrv.c~ b/11.client-server-print-ip-port-bothv2/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/11.client-server-print-ip-port-bothv2/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/11.client-server-print-ip-port-bothv2/daytimesrv.o b/11.client-server-print-ip-port-bothv2/daytimesrv.o new file mode 100644 index 0000000000000000000000000000000000000000..e160c2ea49a5b74049148d48fd4d9d1c59d0a5ed GIT binary patch literal 2412 zcmb7GOKclO7@mZNrXkIm@_raBwK<^5RRb+5g`z}crHN!jL{h2Zp}{!oc-zFb>@{%^ z7Oub*i(@Gq-~bm8Jrqtz6}aiaX^Iqc0Hq)V9N+*F5Tt-|C@4i$!uRj~6Oyf}!pO7V zeE;K{e`j}Qz3}(%t6PO=xlZ7MPPj~i2s+vw=&upKN;^dfXrWdgHHW64zQs2Sr5vm1 zFaanvY#tf@m+R5{tV4Q~d!~&`*&@n1hESe zWzD=G-KHlqZ+_X@G{5!&s^+q+7TZ00(w#Hvm%O2u7ekIwUrxICnO{{)OEGue^Ioe6 zXT1nK5P`)1l$F(4P4gs`-882Ns^%2eEnTxLYllzbUQR(&ay72Gc&&oQwDc^k>I}(3 z=o|^jHhQVGmQgQ#DBa3)I$qZH!z*SEaz?C5cO;DZO47y8Yz$Nn^c%BggP$T)r(~@# zT`euTm1ovfW-#&^{L`{pD)-~A`rUcyemn@fbia|+H)-TnVz_$C1qoR#aO8Ou)w|K- zRt{+DR`y}|+fS=&YsS50Dv#bjzrI!6(CXZ;?MD6a)wxUU+ZJFp>gS&Qw2+UFS_dN| z@kz%XxAM6cB9CM;q!YM>~Nx0sq3BJAgj`JB2v( z1rT$D=Ya@`egZ_T(YJs%0#5*OzC>RJ;yno;1#Sl)0^SOI7)WuuffTn3h_^4i19%H~ z8~gu6?d1Ohh$AliJ%5h#3ueqfD1Jqx6?vp@eOy9LRm%I5z61c@LA(|3q0;*Y@ui$3+3-% z${QQYB;fP*uuyi|a#Y&MWbvOs<(-jC!ND-8g-0!iRMYe&MgWu(*-4d19TRFIXFD(^ z#xi*T)w9P+iJ01he-;cq$a!LDXd<2+NIN|bvh{w(2N?G;?iZ%?Kl*z&=aH@u{{WP~ B%R>MF literal 0 HcmV?d00001 diff --git a/11.client-server-print-ip-port-bothv2/makefile b/11.client-server-print-ip-port-bothv2/makefile new file mode 100644 index 0000000..16fdd6d --- /dev/null +++ b/11.client-server-print-ip-port-bothv2/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/11.client-server-print-ip-port-bothv2/makefile~ b/11.client-server-print-ip-port-bothv2/makefile~ new file mode 100644 index 0000000..ed76715 --- /dev/null +++ b/11.client-server-print-ip-port-bothv2/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/11.client-server-print-ip-port-bothv2/readme b/11.client-server-print-ip-port-bothv2/readme new file mode 100644 index 0000000..08fcb7d --- /dev/null +++ b/11.client-server-print-ip-port-bothv2/readme @@ -0,0 +1,5 @@ +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 + +il client prova a leggere più volte, se non c’è niente da leggere le read dal socket restituisce 0. +L’idea è fare due letture. prima della seconda killare il server in modo da verificare l’errore ricevuto se il client prova a leggere. dopo la prima lettura c’è un wait diff --git a/11.client-server-print-ip-port-bothv2/readme~ b/11.client-server-print-ip-port-bothv2/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/11.client-server-print-ip-port-bothv2/server b/11.client-server-print-ip-port-bothv2/server new file mode 100755 index 0000000000000000000000000000000000000000..65d3aab96fb5539db3aaed12388f97c4fdbfcb4b GIT binary patch literal 9644 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 literal 0 HcmV?d00001 diff --git a/7.client-server-print-ip-port-both/client b/7.client-server-print-ip-port-both/client index f4657651bf375e95768d580ef969ce004ab6f505..9bfcd746a3d426a2290ba4784c63932c583db9a2 100755 GIT binary patch delta 1136 zcmYLJUq}=|7@u8l?f2X7`^`7AJ3Cu3Tj37a zJZ6Lhgix6T0K+r-zR0#4Wrz)ihIUDgP-Lr)Hq<$;R+9lxcey(HKldf5L$Z;pa&?F# zi$%5oR~=jpcss<$q7^+_3;!z>Mc?sm-pJlfttAdAQ}B4tOP@s&l-fzL`DjgCIP`|} zv(V-Wt;WiI-A)4$f@gFEJ}T>{LBq;UAr0i=!+`2=VYpFj+bT2QqDt!@E4-;h5CvV;ke5s}v54ueft?A=oF;FVA)q?fV2@;1R@xqw~Q zO;>7CBbdmGzgjT-l&Nwpzf@jProgKL>W!5RHq&}1#4YlXQiRBKM5AzG%#xFP5Q^!L zNBRN3&`W49hPLNpZx#qz?+<+v9u(fdghM5er7-lm(&d|Xym!Xs4 zDTeugmBaQYFjGlQD1FA85G@L%T2`{@5plx&^#2o11|9SoHUmY%60Lj7gjb%tljBHG zcJwvzV{w&p7w21??{XgF{DAWuXAfr|XFul`oVPiD;Jm|`HV4ByX?4k?O{V#zdcomZ!WG{{hNS2aW&$ delta 1191 zcmZWpTSyd97(O#PvF)leOBiMdV`+2+uLXjs!Ne$8sE8F}?zX$Nv8~&-X%?nNLWj}X z#o;D z=bY6xgam|8rvw0_IyPVB9M81G{g#HtNwHAnRI)7f23Hl*59&BqpDyOU2DMwZa&@kD zlYFtt`JAgoTzwutCf*g5n+>H;fBQ-s9_C-!7vFxigcM2Zh3fb|>9a`2Y#W+tmmxHU z%rns9BkIK3uvt$75rT)b`)Mkhe$cS?wUP$%&}u+^sB)`iu30i)G8KtzUcM@C1!&K- z529{p-*n@oV!lsD$cG=x6MxKG#Jzl7ZxRHn+{Lw4xdeEu{E!WLdH@N$r>J=jf@y{2 zY444muR4Ba9$Bog(9mV50M64(&Ox&df*CDIy@r;=GiCz_I`(Ljw2X0L(x^}3S#vj4 zhsr&yhwQzuGyE9W-`9-_qxnA6w8Q+r2CSVob1hG!dSfQx)vKd32W{jgUL`oRvEv+1mPmhb9+6?2D35_5*^8R6B}G zT3|^!euP!e#dp|Jm`OYQ6kL|kg2$F91&Bi`dk?@$BY zNCeQO9`_#X2zq!9X_K`~`n{Dw%k-KcW3p-;5_u)p#@cPYD*u``axUY%owLrlk#j3& zALkI~Q=HFnzQB2y^Ht8bIYT#e#77jb9BWU%r?v=X2?eF0xom{Qu-D~5EnQ)M#2ZA1 z($MHiA>a>skvk1Vb0DcNm$?(lCt~Dp5k|>W{+^mSyY&k=26Hl;-NK)yi^rZllxM)!jK|#ym023_nh~h`?VE$HFk4G*-hOMcJ)|pIN9hD3zhUB zU)6}l8z*U_U)boGX}R&9O|;padl*4-nU4cEDliCa5-W3I@S_a0FZjRpSz<<`qD+ zG954uo#A?l>oXvRIe`y+IGdu>eFK&L)76mDvDPL+jXi`8Z;JJy()h2lK4X2%`hxW( h>nqkbtgn^E;rq{i*V8V_%X6P4rdzkZ10jonv48fmPr(2H delta 760 zcmYL{K}Z`x6o%jECTmlTS*=wAOSX!%2iGcvB8#opRWkG9x@(t}q)X#dH+&>?TW{onuQWoCEIjMwd@m~q-j zwGn7=d0I|HJ62h!q=x*Zhp4B#8!_s}JGYo*`8*mN;ubMZ#!+2M>2gF28p~|Yvb`<~ z;;tRgiMo-gG!dPFHxZAy!Uw8QyJ$wV$e-fAycF6&pkYI_7FYhni;LCb#HYeZVRT(C zHhvZ*8Pkdn(@AT7VJ?%jma=IlY4uI}tYjzZi4^- diff --git a/extra/da_vedere b/extra/da_vedere index 7e9409a..58e59db 100644 --- a/extra/da_vedere +++ b/extra/da_vedere @@ -37,3 +37,8 @@ ntohs reti_readline reti_writen + + + + +netstat -an -t | grep 9999