From 7e0049f2efb2c1d5048599052f27cc0448aeb743 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Fri, 11 Apr 2014 02:13:31 +0200 Subject: [PATCH] Creato server-client daytime e print_ip_client --- .DS_Store | Bin 6148 -> 0 bytes 7.client-server-daytime/client | Bin 0 -> 13455 bytes 7.client-server-daytime/daytimecli.c | 35 +++++++++ 7.client-server-daytime/daytimecli.c~ | 35 +++++++++ 7.client-server-daytime/daytimecli.o | Bin 0 -> 2744 bytes 7.client-server-daytime/daytimesrv.c | 42 ++++++++++ 7.client-server-daytime/daytimesrv.c~ | 41 ++++++++++ 7.client-server-daytime/daytimesrv.o | Bin 0 -> 3280 bytes 7.client-server-daytime/makefile | 9 +++ 7.client-server-daytime/makefile~ | 8 ++ 7.client-server-daytime/readme | 2 + 7.client-server-daytime/readme~ | 0 7.client-server-daytime/server | Bin 0 -> 13663 bytes 7.client-server-sendip/client | Bin 0 -> 9264 bytes 7.client-server-sendip/daytimecli.c | 30 ++++++++ 7.client-server-sendip/daytimecli.c~ | 31 ++++++++ 7.client-server-sendip/daytimecli.o | Bin 0 -> 2456 bytes 7.client-server-sendip/daytimesrv.c | 45 +++++++++++ 7.client-server-sendip/daytimesrv.c~ | 41 ++++++++++ 7.client-server-sendip/daytimesrv.o | Bin 0 -> 2904 bytes 7.client-server-sendip/makefile | 9 +++ 7.client-server-sendip/makefile~ | 8 ++ 7.client-server-sendip/readme | 2 + 7.client-server-sendip/readme~ | 0 7.client-server-sendip/server | Bin 0 -> 13660 bytes 8.client-server-echo/echocli.c | 40 ++++++++++ 8.client-server-echo/echosrv.c | 59 ++++++++++++++ 8.client-server-echo/echosrv.c~ | 59 ++++++++++++++ 8.client-server-echo/echosrv.o | Bin 0 -> 3336 bytes 8.client-server-echo/makefile | 6 ++ 8.client-server-echo/makefile~ | 8 ++ 8.client-server-echo/server | Bin 0 -> 13651 bytes basic.h | 28 +++++++ da_vedere~ | 13 ---- da_vedere => extra/da_vedere | 0 socket.txt => extra/socket.txt | 0 fun-corso-reti.c | 107 ++++++++++++++++++++++++++ fun-corso-reti.o | Bin 0 -> 2944 bytes 38 files changed, 645 insertions(+), 13 deletions(-) delete mode 100644 .DS_Store create mode 100755 7.client-server-daytime/client create mode 100644 7.client-server-daytime/daytimecli.c create mode 100644 7.client-server-daytime/daytimecli.c~ create mode 100644 7.client-server-daytime/daytimecli.o create mode 100644 7.client-server-daytime/daytimesrv.c create mode 100644 7.client-server-daytime/daytimesrv.c~ create mode 100644 7.client-server-daytime/daytimesrv.o create mode 100644 7.client-server-daytime/makefile create mode 100644 7.client-server-daytime/makefile~ create mode 100644 7.client-server-daytime/readme create mode 100644 7.client-server-daytime/readme~ create mode 100755 7.client-server-daytime/server create mode 100755 7.client-server-sendip/client create mode 100644 7.client-server-sendip/daytimecli.c create mode 100644 7.client-server-sendip/daytimecli.c~ create mode 100644 7.client-server-sendip/daytimecli.o create mode 100644 7.client-server-sendip/daytimesrv.c create mode 100644 7.client-server-sendip/daytimesrv.c~ create mode 100644 7.client-server-sendip/daytimesrv.o create mode 100644 7.client-server-sendip/makefile create mode 100644 7.client-server-sendip/makefile~ create mode 100644 7.client-server-sendip/readme create mode 100644 7.client-server-sendip/readme~ create mode 100755 7.client-server-sendip/server create mode 100644 8.client-server-echo/echocli.c create mode 100644 8.client-server-echo/echosrv.c create mode 100644 8.client-server-echo/echosrv.c~ create mode 100644 8.client-server-echo/echosrv.o create mode 100644 8.client-server-echo/makefile create mode 100644 8.client-server-echo/makefile~ create mode 100755 8.client-server-echo/server create mode 100644 basic.h delete mode 100644 da_vedere~ rename da_vedere => extra/da_vedere (100%) rename socket.txt => extra/socket.txt (100%) create mode 100644 fun-corso-reti.c create mode 100644 fun-corso-reti.o diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index e0d8cdad1d1080cc36250048b659a486ef16ba44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 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 literal 0 HcmV?d00001 diff --git a/7.client-server-daytime/daytimecli.c b/7.client-server-daytime/daytimecli.c new file mode 100644 index 0000000..3128e01 --- /dev/null +++ b/7.client-server-daytime/daytimecli.c @@ -0,0 +1,35 @@ +/* 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); +} + while ( (n = read(sockfd, recvline, MAXLINE)) > 0) { + recvline[n] = 0; /* null terminate */ + fputs(recvline, stdout); + } + exit(0); + } diff --git a/7.client-server-daytime/daytimecli.c~ b/7.client-server-daytime/daytimecli.c~ new file mode 100644 index 0000000..a996694 --- /dev/null +++ b/7.client-server-daytime/daytimecli.c~ @@ -0,0 +1,35 @@ +/* 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); +} + while ( (n = read(sockfd, recvline, MAXLINE)) > 0) { + recvline[n] = 0; /* null terminate */ + fputs(recvline, stdout); + } + exit(0); + } diff --git a/7.client-server-daytime/daytimecli.o b/7.client-server-daytime/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..0425fcc0c7542d5ccf50625e94c1062ba8d4d50c GIT binary patch literal 2744 zcmbuBPiP!f9LIl~O>K-#yVf3rDvV&IRWmWD#g-D*#F?R9Lco6YauR#;A?`9>m`8ZLdK zb9L@a2CN?Nl8RobkUt%k~ zd9d{9#Ny0jn()m{*Bi=T;Z|{>XjiS41Xq1m1#61jny-9vSJIT+Bp!6CaibALJQl?& zaL-*>o=ufsy}|}?3sx`J6TcDIH2=4CH~`8Y)@=foO{?c-bTpGfhkA4b1HY;FH_<}` zXL*7zs0P#1fGjWY1ul*&F#TrybVuCs`CsNS#Qd-R^X!XMILK1&oBSV2$hxiH;!~`^ z^c4$C`<4m#QjXhc+4d}tTV0yQ`GU+~-u8XtpEqwB@P-V^dcOXP%<|6^E?-RJPQ!J= z`oY)w+x2^rS^n8GqMIhakB*Rh{pjawhxwA(kaqtZVD>m)`TSs`@_WYc10I)>&o9TM z4!cSEYfmz(7e}rb>KIiC_^2lgu3w)v?657;{-G|F;&AqoB2NDF5*=id!=g@mj-O(V zmwjHao}>7)WBBu9_=z!mZVboy8I`v@hI?c9dt>;?m2_sdvUldAJEp92QYv&~JYn%^)_X-5ZNUripO$U1(V}I`rq%1hj zn&p=S#~HAE)o>dh&mGbjH2O@*_#X={ca}aU%Wj)Ucj(3Z-f6;Io|AL7-C+y{XPYEvL-8iKjMSGJpcdz literal 0 HcmV?d00001 diff --git a/7.client-server-daytime/daytimesrv.c b/7.client-server-daytime/daytimesrv.c new file mode 100644 index 0000000..47ac4be --- /dev/null +++ b/7.client-server-daytime/daytimesrv.c @@ -0,0 +1,42 @@ +/* Implementa un daytime server che risponde alla porta definita dall'utente */ + +#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 { + } + + ticks = time(NULL); + snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); + while ( (n=write(connfd, buff, strlen(buff))) < 0 ); + close(connfd); + } +} diff --git a/7.client-server-daytime/daytimesrv.c~ b/7.client-server-daytime/daytimesrv.c~ new file mode 100644 index 0000000..1427913 --- /dev/null +++ b/7.client-server-daytime/daytimesrv.c~ @@ -0,0 +1,41 @@ +/* Implementa un daytime server che risponde alla porta definita dall'utente */ + +#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);} + + ticks = time(NULL); + snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); + while ( (n=write(connfd, buff, strlen(buff))) < 0 ); + close(connfd); + } +} diff --git a/7.client-server-daytime/daytimesrv.o b/7.client-server-daytime/daytimesrv.o new file mode 100644 index 0000000000000000000000000000000000000000..a970700c80469ff0da05f6ccdc20fca816644db5 GIT binary patch literal 3280 zcmbuBO^6&t6oB8%tY(dwWL@KLB8*~U{7EMplMok;6PI!8kccL(A_%5urq}Icr+etG zF}ofVSw?JzfgC)E2an=G1PKYj-K<_Fr{FiU_tD~F%W=W<{q2M1x$G8EvW!ay%8wG2gA4>KbAS-kV>aqJTTSiBinYMqlhYhOsp;`TV8IyKz*-JG0@IabA?8|kjFwR!qD$J? zUQHi5c3!y&o&UviFiSlErMW_d?ijVdQxl~!W1@o?X_|=I7iogsxYA)o^rc!>#C^1` z&_~6|pQDl03Y^v!(QAK<4kRM_O4&uHOGrfDUj0-=7sc;ii|+F{K$jwQRK9~HirPOQ zU0S9R7Cwp1I*DJd5rkG~zwS(y>h_{^8%`L!QF^lJ2hu(Wp|Fj@3I#nY~Cv{5-BmUkkR08bQ_rk5H(>UrFVtqIM zNVemTIJ-UwL!H(%MUvw`hCUSYzxJQNzBGPvI5YkUv~eL{E>B>C*lrF{zoY{`n&76t zsh>f+(YfoN$%M2q>HD(oKjf|#o%}}NH@uyOrI7l? zD37#Eh^MVEae5$zr2y-OA(F!N+23d`44qzpjp#DY@-*l8cI5PiC566c8ow`tKbXNE z$>6&(_`VE2nZXZbaFM}}Wbk7d{M8Iz&EPP2wX7O6Y}bQkONQVqxKck~FeiO)9&G8m zN)6RZ2JsuFUoD`Q4{E9my=LHgau!Ynu0%NRhYrv^MS^eG4ZCK)qVX9b+h6fhy;f$N z&aUAvGEQg8aC1&f{Cl-ugZcCLrx@q)KVZCwx{3ceF>h{CS>N8RvP9=!<}^7rMht{G#S2{vO?bocZ(kTN&r^?@z>eTF2SW{CS+G7$0Z( zypV`9t>e7J{CS+?jPrb)L>#jZPB4ES$4~gbqQ{jP{% gPx# literal 0 HcmV?d00001 diff --git a/7.client-server-daytime/makefile b/7.client-server-daytime/makefile new file mode 100644 index 0000000..16fdd6d --- /dev/null +++ b/7.client-server-daytime/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-daytime/makefile~ b/7.client-server-daytime/makefile~ new file mode 100644 index 0000000..ed76715 --- /dev/null +++ b/7.client-server-daytime/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-daytime/readme b/7.client-server-daytime/readme new file mode 100644 index 0000000..98ce113 --- /dev/null +++ b/7.client-server-daytime/readme @@ -0,0 +1,2 @@ +il server per ogni richiesta accettata copia la data locale al socket client +il client colelgato legge la data copiata e stampa diff --git a/7.client-server-daytime/readme~ b/7.client-server-daytime/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/7.client-server-daytime/server b/7.client-server-daytime/server new file mode 100755 index 0000000000000000000000000000000000000000..f434b739759adbf1929fe1b6f01018a7a1834ab4 GIT binary patch literal 13663 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 P4(+Q!IY-o%eYNCYNR8+q literal 0 HcmV?d00001 diff --git a/7.client-server-sendip/daytimecli.c b/7.client-server-sendip/daytimecli.c new file mode 100644 index 0000000..92be990 --- /dev/null +++ b/7.client-server-sendip/daytimecli.c @@ -0,0 +1,30 @@ +/* Client che si collega a un server e basta */ + +#include "../basic.h" + +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); + } + exit(0); +} diff --git a/7.client-server-sendip/daytimecli.c~ b/7.client-server-sendip/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/7.client-server-sendip/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-sendip/daytimecli.o b/7.client-server-sendip/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..c4eed0f942ee5174d0f3b97eda74036ba13709d0 GIT binary patch literal 2456 zcmbuA&r1|h9KgT3YiXvrmWRNCIb^8isAN(ivL%}nn22B<3S?YobI_exX5NAdVjxC~ z2z3kkC%P3La!+}Y2!iO~L5iS59XjP9uDRnO`6DLdYNT;v9p{kKAnBm(xp6A}I62&SoD+QL{$hcd(>OD1l;&Bf zdDgtCGi!l?K4UTy^l9G*-E#vY=N1Z?ZVnwN%$l9bduG9sW&U^8 zFafoH*tbZS5i@@`q0>~O=%lvBFyilP=?Uw zHCq2NQp)+S@x2&JrIc%n7C=$df55HqA^Vr)Ix6JaBY~KAMEs=)7nsM;(oGzasjk1` zV2tlQ!J_@|i}-75Qq-gUPauo_rWEq%1U<*x<7Gs zGgUZ*Uj#h|1=Dt*SYkd{3pNwq0x+3t!z_LU{P2SSMbCCvUVaIn4fB)K<4|{@lhfc# z(%SEXK>8F;cR_M_zUU0o8I}C5@R#}NcOkhSO#IBN`7MR3`JXAg5p|jWg~DmCCFdVf zw5gvag?~VuME27knD9l+ + +int main(int argc, char **argv) { + int listenfd, connfd, n; + struct sockaddr_in servaddr; + char buff[INET_ADDRSTRLEN]; + + 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; + 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); + } + + inet_ntop(AF_INET, &(client_addr.sin_addr), buff, INET_ADDRSTRLEN); + fprintf (stdout,"%s\n",buff); + close(connfd); + } +} diff --git a/7.client-server-sendip/daytimesrv.c~ b/7.client-server-sendip/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/7.client-server-sendip/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-sendip/daytimesrv.o b/7.client-server-sendip/daytimesrv.o new file mode 100644 index 0000000000000000000000000000000000000000..d8646dbf982c384588a76e879ada34dac48c3923 GIT binary patch literal 2904 zcmbuB&x;gC6vyApZsKZOU4I3M5$2FhHvVW`e}rTSI%eruhmD9ZnjoURGd*tOPWRAV z6LtejLM9QLVZgsYJm%n0$S8{rOJIb6>^Ubd0Ykj##T*2EucvC~S#%T72R-%Pr(S*Q zRaO6(AMKg1^SK;o%fT@iM4AFT&JX-z;uc{PHb6B^b*z0zju{ajqMfD{-)cqJ9o!OCw{1Ue(k1DikbJ`!OZ_j>)E#x zy>{s~>OaC!1L@daZZ0inFY1wK*N1U&t9SY(tqk_#4lPo&r~nY{(khDLqB;~ND{I-y zs<3~5X++LtcdAfv7Nu8nqwxE}m-Qf&&M}CB@)cJW+%OD6nDzXMa_7BBy1ojWa@nox zr15A2z{%<9slr5Qw&Bahff>(t!k}=(`pi1Kf3lIlqo4L;DhFVDzk%EjXCSvQmfN*) z-NtmlENY^@fsExXnZ!MZh{J40)$=ah8J zrx#!orfg+(>gRYHa(W?~M(3HvcW3aAGWebhejtM%&EQiR{6q#98JzC#v~_)#!JP~a zgD;R(hMME~P;bZx+yzgnPZ7+?z@G<4243Pu$yW*b-y`UMiNNz+dC`|a9U@r?8WO7Y z(DP*#%JV^lZ}oAUpA5fLuiYKAuVnN%P~VG}eLF%BjW|7{n$v!e5vONI^RooewEhSE z5YDUC)Yl&xQ~w&vA4Om5-(Z~XLCt?-d^6)KjMF*k{67`fb$+7aRhG~9;V;JdKK#Qt zy{okTGsU(3Ar(Jo`CMQBl{EKZw|b!v--?&k->bORKdy8SvV5*T#W=73TgK_x)%q6< g{TZcSVfpmmMdvRtzJu|f8GoPg0{UdMF1ob60vo`thX4Qo literal 0 HcmV?d00001 diff --git a/7.client-server-sendip/makefile b/7.client-server-sendip/makefile new file mode 100644 index 0000000..16fdd6d --- /dev/null +++ b/7.client-server-sendip/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-sendip/makefile~ b/7.client-server-sendip/makefile~ new file mode 100644 index 0000000..ed76715 --- /dev/null +++ b/7.client-server-sendip/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-sendip/readme b/7.client-server-sendip/readme new file mode 100644 index 0000000..1f85399 --- /dev/null +++ b/7.client-server-sendip/readme @@ -0,0 +1,2 @@ +il server attende una connessione dal client e stampa lip del client +il client si connette soltanto al server diff --git a/7.client-server-sendip/readme~ b/7.client-server-sendip/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/7.client-server-sendip/server b/7.client-server-sendip/server new file mode 100755 index 0000000000000000000000000000000000000000..6f276d8b9a62cee00d415f742161900219725b44 GIT binary patch literal 13660 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

c5d1w-ug0h6<>V3O{c-uZr`E zIL@qJX+K(FPhUu>w5*n-{61lE)9Z)%U!r2~pT3S#(UpB=f0g{-K$q4Y`_Ioy&ifit z z-^OneYSb2we^}WMD|?-svlXAMPSxMwk5rn8u@$!G{fkB19Mi=RaNn#$^gW-&eQlBQ zmF*ZHp6?yTi0T_G?lBdpZ-S-VFpeAVEA$>WTmQrKU_v=tA*}4*(whD1L1bFo+6h7&lmhWaN-Nf z@5xU5=JNZ#6JLn^ShGX2?h%X1`KETEN7M`6N1b?s;Qi5wd&~KfPJFT8{mh9kDd&MY z@uk>zy6ljwd+^na_Z7R)BW^){=xqA8mh-fn`nQ#Tk2vw=g6~@=KAr#O#3^geS*-hD zkytoia|r1Esu7=;f4{Mi-s@b*1myjiak^h!VrCp#BtA0^0pM=TV{=8n-;??)#7VWE z@O|@?!cQrj@5cev&TvIL)%>UT4)VXbBK|K+e6jF)HPoidAEWA;Wgh<=IQc(`v>FBxBJ;T(tgQockqR*Y*UaMvvB?e;4A zTc!TY^%exagzh^vUfw$&m$>Dk{hF?VzYKh~{LDWA?!#MK<$9*~KE?|k5wm> z6JyVd_1q)StO;T&>bhsS3Un0h!I8JF4LK0AK80DkvGuUUpQ` zf2<0=AGmjxxE-pZ|3|=m_6}8@5~vrumx~j;-W2{*!o~Fd$?Nl?Y=4p1v`~|pGWP(r zUn!i@<*4N3Rfvxzt{5A+4xHwtxVFoN3h||Chu^DN==RJ$kM+Q5olt%r6`5-Rx>Vso zwSH*dp>n&#t-AfXr3$_axX-Sr>QAcnf3D*2qQal5($4c$@S!UBPb5C``FOI5z6gin zaa*dh2&c@nnL&nN7tA*zri9!{}&zFc_c+$vo|FI%CKanQ}(B zrrA@qD^tRqQY$OmiP3qCmHrK<&6pw6$0^I)sV1|+osbcgXE~NXl&xN2VkMe8ZDdlr z6Ow7^PDm{WYih`$N^wQbdZpMlCYA19so}`KH;hO+Y4nB?k$6-X?Yj|{k~}0jHSad~+T literal 0 HcmV?d00001 diff --git a/8.client-server-echo/echocli.c b/8.client-server-echo/echocli.c new file mode 100644 index 0000000..ac0667c --- /dev/null +++ b/8.client-server-echo/echocli.c @@ -0,0 +1,40 @@ +/* Client che interroga un echo server */ + +#include "basic.h" + +void client_echo(FILE *fp, int sockfd); + +int main(int argc, char **argv) { + int sockfd, n; + struct sockaddr_in servaddr; + + if (argc != 3) + { printf("usage: echocli \n"); exit(1); } + + if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) + { printf("socket error\n"); exit(1); } + + bzero(&servaddr, sizeof(servaddr)); + servaddr.sin_family = AF_INET; + servaddr.sin_port = htons(atoi(argv[2])); /* echo server port */ + if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) + { printf("inet_pton error for %s", argv[1]); exit(1);} + + if (connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) + { printf("connect error\n"); exit(1);} + + client_echo(stdin, sockfd); /* svolge tutto il lavoro del client */ + exit(0); +} + + +void client_echo(FILE *fp, int sockfd) { + char sendline[MAXLINE], recvline[MAXLINE]; + while (fgets(sendline, MAXLINE, fp) != NULL) { + reti_writen(sockfd, sendline, strlen(sendline)); + if (reti_readline(sockfd, recvline, MAXLINE) == 0) + { printf("%s: server terminated prematurely",__FILE__); exit(1); } + fputs(recvline, stdout); + } +} + diff --git a/8.client-server-echo/echosrv.c b/8.client-server-echo/echosrv.c new file mode 100644 index 0000000..b961816 --- /dev/null +++ b/8.client-server-echo/echosrv.c @@ -0,0 +1,59 @@ +/* Implementa un echo server che risponde alla porta definita dall'utente */ +/* Crea un figlio per ogni client */ + +#include "../basic.h" + +void server_echo(int sockfd); + +int main(int argc, char **argv) { + pid_t childpid; + int listenfd, connfd; + struct sockaddr_in servaddr, cliaddr; + socklen_t cliaddr_len; + + if( argc != 2){ + printf("Usage: echosrv \n"); exit(1); +} + + if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) + { printf("socket error\n"); exit(1); } + + 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])); /* echo server */ + + if( (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0) + { printf("bind error\n"); exit(1); } + + if( listen(listenfd, BACKLOG) < 0 ) + { printf("listen error\n"); exit(1);} + + for ( ; ; ) { + cliaddr_len = sizeof(cliaddr); + if( (connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &cliaddr_len)) < 0) + { printf("accept error\n"); exit(1); } + + if( (childpid = fork()) == 0 ) { + close(listenfd); + server_echo(connfd); /* svolge tutto il lavoro del server */ + exit(0); + } + + close(connfd); + } +} + +void server_echo(int sockfd) { + ssize_t n; + char line[MAXLINE]; + for ( ; ; ) { + if ( (n = reti_readline(sockfd, line, MAXLINE)) == 0) + { + printf("\n Connessione chiusa dal client \n"); + return; /* connection closed by other end */ + } + reti_writen(sockfd, line, n); + } +} + diff --git a/8.client-server-echo/echosrv.c~ b/8.client-server-echo/echosrv.c~ new file mode 100644 index 0000000..a269b43 --- /dev/null +++ b/8.client-server-echo/echosrv.c~ @@ -0,0 +1,59 @@ +/* Implementa un echo server che risponde alla porta definita dall'utente */ +/* Crea un figlio per ogni client */ + +#include "/..basic.h" + +void server_echo(int sockfd); + +int main(int argc, char **argv) { + pid_t childpid; + int listenfd, connfd; + struct sockaddr_in servaddr, cliaddr; + socklen_t cliaddr_len; + + if( argc != 2){ + printf("Usage: echosrv \n"); exit(1); +} + + if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) + { printf("socket error\n"); exit(1); } + + 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])); /* echo server */ + + if( (bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))) < 0) + { printf("bind error\n"); exit(1); } + + if( listen(listenfd, BACKLOG) < 0 ) + { printf("listen error\n"); exit(1);} + + for ( ; ; ) { + cliaddr_len = sizeof(cliaddr); + if( (connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &cliaddr_len)) < 0) + { printf("accept error\n"); exit(1); } + + if( (childpid = fork()) == 0 ) { + close(listenfd); + server_echo(connfd); /* svolge tutto il lavoro del server */ + exit(0); + } + + close(connfd); + } +} + +void server_echo(int sockfd) { + ssize_t n; + char line[MAXLINE]; + for ( ; ; ) { + if ( (n = reti_readline(sockfd, line, MAXLINE)) == 0) + { + printf("\n Connessione chiusa dal client \n"); + return; /* connection closed by other end */ + } + reti_writen(sockfd, line, n); + } +} + diff --git a/8.client-server-echo/echosrv.o b/8.client-server-echo/echosrv.o new file mode 100644 index 0000000000000000000000000000000000000000..a95eedb7a8bedd114936aa7f5d5797d38435de70 GIT binary patch literal 3336 zcmbuBU1%It6vxl*MjO+nO>6zYsElB=+IHL6`V~ryhOvWG4WX+A3(I8ot~+Kk6K7^) zDg==w>aZ^Qq6mV|J{Ekigtl2UuqiDP#D^k2_##x&2Nl6Qi1D16d%MTU4uT$-x##}w zx&M3aotb;*E&ar^*-QqMWndIKHAMl=i<^g+Q0e=_RVC&GpEMp!#rG8#QY z`>@>z^^M_Hec^mI*t<;e*XXuP(vi1B)r(YJ&MFq_EA@pHIMcO*(bU(BHuVCdJ=RNQ zxvj5dp`#w^-x&@4tWj_E8V$^#9gVc>%a-)Yq5iGWe15H=uPhCaPWX*%S!{J56eBO* zgpvOe*4A5*UbE0b{U5PcM>^D3>kF$XlZp}y^(*y-D^R-^`^kYC`l|Fgv+J<+5296n z`}$#Azwp8je{F6i*4=0}e?i(Z9fo>teBQ1W>ruu2YuSO>o~&qZPyW+Rk3Tnsg=yCW>szB1RB8c@$nID zUty}|1hqpaY{&Fm?P&h7{E>shwFo}?P+X4`_e$N&o0E{4AIJ>u*w*_YuG5{!@0M+I z^m;zMbKsrqc>m4lYIr??7ulzDQ*GIgu{Qy8oVc!+dfF@k%n{S8t&^n%pn8qf6tc<)QT@djK!uY+E4=ClljF5O2w`4j?1V|Jr{T z`_lNy;Z8~LI<|3B`78D$I@JHL05_xh>DfH@&xPzJ(JwNKJ`m5)+8(DJgspo`*CRLav^Y4~Bg>T3gQauMs zhhC}V_{6%7FWrI1Ib$tQ8@aBY9BvtT4U>7}Mma4WR;@TUYjprs5i_uw8v?|lZvT0WV zhA=;}KD_wb_HabweS_Nm+>GrgmHr`F|AWPIef6tN z+cej|M{ZEW_u!@U_e-wyk4atn^&_Kru0O&!*MExfTd|MQpJbf=i4;H0IPDRNml@~! zvy5|{FBrd_>0Fjv&5OQEvNaaZ=hZ_KMWce=HI>hH#_4QQTtlCXnq^2-SL>&^+6Vpy DhtWBY literal 0 HcmV?d00001 diff --git a/8.client-server-echo/makefile b/8.client-server-echo/makefile new file mode 100644 index 0000000..3a00e69 --- /dev/null +++ b/8.client-server-echo/makefile @@ -0,0 +1,6 @@ +server : echosrv.o ../fun-corso-reti.o + gcc -o server echosrv.o ../fun-corso-reti.o +echosrv.o : echosrv.c ../basic.h + gcc -c -o echosrv.o echosrv.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/8.client-server-echo/makefile~ b/8.client-server-echo/makefile~ new file mode 100644 index 0000000..cc57073 --- /dev/null +++ b/8.client-server-echo/makefile~ @@ -0,0 +1,8 @@ +calcola : calcola.o funzioni1.o funzioni2.o + gcc -o calcola calcola.o funzioni1.o funzioni2.o +calcola.o : funzioni.h calcola.c + gcc -c -o calcola.o calcola.c +funzioni1.o : funzioni.h funzioni1.c + gcc -c -o funzioni1.o funzioni1.c +funzioni2.o : funzioni.h funzioni2.c + gcc -c -o funzioni2.o funzioni2.c diff --git a/8.client-server-echo/server b/8.client-server-echo/server new file mode 100755 index 0000000000000000000000000000000000000000..a2b92432e9f9959cae974398a1b9b300b0a72576 GIT binary patch literal 13651 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 J|BT?q{u|iZ^SS^4 literal 0 HcmV?d00001 diff --git a/basic.h b/basic.h new file mode 100644 index 0000000..215d447 --- /dev/null +++ b/basic.h @@ -0,0 +1,28 @@ +#ifndef __BASIC__ +#define __BASIC__ + +#include /* basic system data types */ +#include /* basic socket definitions */ +#include /* timeval{} for select() */ +#include /* timespec{} for pselect() */ +#include /* sockaddr_in{} and other Internet defns */ +#include /* inet(3) functions */ +#include +#include /* for nonblocking */ +#include +#include +#include +#include +#include +#include /* for S_xxx file mode constants */ +#include /* for iovec{} and readv/writev */ +#include +#include +#include /* for Unix domain sockets */ + +#define MAXLINE 256 +#define PORT 12345 +#define BACKLOG 5 +#define MAX(a, b) ((a) > (b) ? (a) : (b)) + +#endif diff --git a/da_vedere~ b/da_vedere~ deleted file mode 100644 index 72c4b58..0000000 --- a/da_vedere~ +++ /dev/null @@ -1,13 +0,0 @@ -nel make file -@echo compilazione di $< in $@ - -FLAG1= -c - -FLAG2 = -o - - - -clear: - rm -f -- per esempio - -piu file di giannino per i socket diff --git a/da_vedere b/extra/da_vedere similarity index 100% rename from da_vedere rename to extra/da_vedere diff --git a/socket.txt b/extra/socket.txt similarity index 100% rename from socket.txt rename to extra/socket.txt diff --git a/fun-corso-reti.c b/fun-corso-reti.c new file mode 100644 index 0000000..0034a82 --- /dev/null +++ b/fun-corso-reti.c @@ -0,0 +1,107 @@ +#include "basic.h" + +/*************************************************************************** + * gestisci_zombie + * chiama waitpid per eliminare gli zombie. + * Deve essere registrata con signal per il segnale SIGCHLD + ***************************************************************************/ +void gestisci_zombie(int signo) { + pid_t pid; + int stat; + + while ( (pid = waitpid(-1,&stat,WNOHANG)) > 0) { + printf("Child %d terminated\n",pid); + } +} + + +/*************************************************************************** + * reti_read + * legge tutti i dati disponibili nel buffer in una sola volta e poi li + * esamina un byte per volta. La read, invece, legge un byte per volta. + ***************************************************************************/ +ssize_t reti_read(int fd, char *ptr) { + static int read_cnt = 0; /* numero di byte letti */ + static char read_buf[MAXLINE]; /* buffer per mantenere i dati letti */ + static char *read_ptr; /* puntatore al prossimo byte da leggere */ + + if (read_cnt <= 0) { + /* se non ci sono byte disponibili nel buffer chiama la read. */ + while ( (read_cnt = read(fd, read_buf, sizeof(read_buf))) < 0) + /* se la read fallisce perchè non ci sono sufficienti + dati riprova, altrimenti esce. */ + if (errno != EINTR) + return(-1); + if (read_cnt == 0) + return(0); + read_ptr = read_buf; + } + + /* legge il prossimo byte dal buffer e decrementa il numero dei byte + disponibili */ + read_cnt--; + *ptr = *read_ptr++; + return(1); +} + + +/*************************************************************************** + * reti_readline + * legge un'intera riga utilizzando la reti_read + ***************************************************************************/ +ssize_t reti_readline(int fd, void *vptr, size_t maxlen) { + int n, rc; + char c, *ptr; + + ptr = vptr; + for (n = 1; n < maxlen; n++) { + if ( (rc = reti_read(fd, &c)) == 1) { + *ptr++ = c; + if (c == '\n') + break; /* legge il newline, come la fgets() */ + } + else + if (rc == 0) { + if (n == 1) + return(0); /* EOF, non ha letto nulla */ + else + break; /* EOF, ha letto qualcosa */ + } + else + return(-1); /* errore, errno settato dalla read() */ + } + + *ptr = 0; /* inserisce uno 0 per indicare la fine dell'input, coma la fgets() */ + return(n); + /* restituisce il numero di byte letti */ +} + + +/*************************************************************************** + * reti_writen + * scrive n byte sul descrittore fd. Riprova fino a quando i dati non + * vengono effettivamenti scritti. + ***************************************************************************/ +ssize_t reti_writen(int fd, const void *vptr, size_t n) { + size_t nleft; /* byte anora da scrivere */ + ssize_t nwritten; /* byte scritti dall'ultima write */ + const char *ptr; + + ptr = vptr; + nleft = n; + while (nleft > 0) { + if ( (nwritten = write(fd, ptr, nleft)) <= 0) { + if (errno == EINTR) + /* richiama la write se la funzione è fallita perchè + nel buffer ptr non ci sono sufficienti byte. */ + nwritten = 0; + else + return(-1); + } + + nleft -= nwritten; + ptr += nwritten; + } + return(n); + /* restituisce il numero di byte scritti. */ +} diff --git a/fun-corso-reti.o b/fun-corso-reti.o new file mode 100644 index 0000000000000000000000000000000000000000..5b8cdd92bfc60b55aa5c99c0ca0d4290513ed60e GIT binary patch literal 2944 zcmb_eQD_`h6upy;O&gnLEtW=7>iD5;(TuIF)z%=ZVeI>e3N32|h3)L_#0+LZc&mpBVaK7Yg09AL3Vk^jBHfeyos>MHb?{Z{FLTJQKgX@ZP=m z+;i`{^XARlT{NfP8qhS5qQUFX_aq9ilq>p`Y-L{@ocW@7xI?8xj?D;+I-YIHff zj`Zf$G^?6TZFJdOpBxVNw+swJI8v>wY2h<*mj~oC?yq9qnz_bqu-D90|GSoUol4xp z<_Y|-mO4mWrPf;S;`20F?d=Zl>le`%hT5!JX~W{v{oM_RS;K78=CpeIJdTCh?2w5i zP-|ufvzicoPxbHLB`(0!tTR{CpDpTv?Ux+a3hd%Az^SRJllsAIK6Hcd#c70nPd{cH zH;zsm2|4)kq1cBf<1(OKJPq1HS{vUvwEa46=sv`0keD>Ru`B)gz|_dLfebR@*d*a7 zH)-m{zwO08Bpl@{ntJgsdhttyqg>>3vA=mJK2eHU==<_0;Sorxf$Oo*|g;UAvzYJ^S4bYmJ$Bn z6imoq!X|SZhl&yY{tlV}Rz?2fXp@Os&t**L=TH-#xE^?9azGFirLOe?#;K;7pAq>7 zmHu_5-VyYPqAn-%_b7a&9GnpOhZSB{6ntL6WxmvJihP9zOKL-cAoC>utjJgCGXI7o z3N80v!l%(t_mpBfy)cw>dJ1q`8O(G0-8tE_}H^#7V&rr>aw`w~HGisej!90CY$0PCPHaOA(vKk=~fjy)#?j zA0SS3Wd2Q&OBdN@bw1ew|5ViZQ{?lz8SO~m7sNhX7V)o9Z&n{>LU*Fz`DJgyw*$v0 zfNxvHT)_>DW3RmQYV7618S+lV-hAMrcl0oPWS0Y{TySz1y;9z>VcvJ#Ut(~r+Nt{r>leJ8M8;3{r>m*^jV3^$w-UEuW1jNs_f zKN^(d37m2z{$2v7vm|jVfz$p-{4;^my2RIoe?@3om%e$)uO;wg{V%t`<@ZQ+lKdYO z{+M`=w**f2PqLq%6u#`Iz6IV;@O`5GZ(HDdMV$H^#Ubnen84}3hs5tB@Z^5#$RVLR XG^AvNA#wR#oKtXl&X*Kip7VbI38B}E literal 0 HcmV?d00001