From f5f3716102053d562bc1f17a2c8f7e31e37a7da7 Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Thu, 29 May 2014 19:41:21 +0200 Subject: [PATCH] Implementato alcuni server ricorsivi ed errori --- .../client | Bin 0 -> 9760 bytes .../daytimecli.c | 94 ++++++++++++++++++ .../daytimecli.c~ | 0 .../daytimecli.o | Bin 0 -> 2952 bytes .../daytimesrv.c | 0 .../daytimesrv.c~ | 0 .../daytimesrv.o | Bin .../makefile | 0 .../makefile~ | 0 .../readme | 0 .../readme~ | 0 .../server | Bin .../client | Bin .../daytimecli.c | 0 12.3 nodes communication/daytimecli.c~ | 31 ++++++ .../daytimecli.o | Bin 12.3 nodes communication/daytimesrv.c | 63 ++++++++++++ 12.3 nodes communication/daytimesrv.c~ | 41 ++++++++ 12.3 nodes communication/daytimesrv.o | Bin 0 -> 2412 bytes 12.3 nodes communication/makefile | 9 ++ 12.3 nodes communication/makefile~ | 8 ++ .../readme | 0 12.3 nodes communication/readme~ | 0 12.3 nodes communication/server | Bin 0 -> 9644 bytes 13.mail smtp test and errors/client | Bin 0 -> 9760 bytes 13.mail smtp test and errors/daytimecli.c | 94 ++++++++++++++++++ 13.mail smtp test and errors/daytimecli.c~ | 31 ++++++ 13.mail smtp test and errors/daytimecli.o | Bin 0 -> 2952 bytes 13.mail smtp test and errors/daytimesrv.c | 63 ++++++++++++ 13.mail smtp test and errors/daytimesrv.c~ | 41 ++++++++ 13.mail smtp test and errors/daytimesrv.o | Bin 0 -> 2412 bytes 13.mail smtp test and errors/makefile | 9 ++ 13.mail smtp test and errors/makefile~ | 8 ++ 13.mail smtp test and errors/readme | 0 13.mail smtp test and errors/readme~ | 0 13.mail smtp test and errors/server | Bin 0 -> 9644 bytes 36 files changed, 492 insertions(+) create mode 100755 11.client-server-test-error- read write on closed socket/client create mode 100644 11.client-server-test-error- read write on closed socket/daytimecli.c rename {11.client-server-print-ip-port-bothv2 => 11.client-server-test-error- read write on closed socket}/daytimecli.c~ (100%) create mode 100644 11.client-server-test-error- read write on closed socket/daytimecli.o rename {11.client-server-print-ip-port-bothv2 => 11.client-server-test-error- read write on closed socket}/daytimesrv.c (100%) rename {11.client-server-print-ip-port-bothv2 => 11.client-server-test-error- read write on closed socket}/daytimesrv.c~ (100%) rename {11.client-server-print-ip-port-bothv2 => 11.client-server-test-error- read write on closed socket}/daytimesrv.o (100%) rename {11.client-server-print-ip-port-bothv2 => 11.client-server-test-error- read write on closed socket}/makefile (100%) rename {11.client-server-print-ip-port-bothv2 => 11.client-server-test-error- read write on closed socket}/makefile~ (100%) rename 11.client-server-print-ip-port-bothv2/readme~ => 11.client-server-test-error- read write on closed socket/readme (100%) create mode 100644 11.client-server-test-error- read write on closed socket/readme~ rename {11.client-server-print-ip-port-bothv2 => 11.client-server-test-error- read write on closed socket}/server (100%) rename {11.client-server-print-ip-port-bothv2 => 12.3 nodes communication}/client (100%) rename {11.client-server-print-ip-port-bothv2 => 12.3 nodes communication}/daytimecli.c (100%) create mode 100644 12.3 nodes communication/daytimecli.c~ rename {11.client-server-print-ip-port-bothv2 => 12.3 nodes communication}/daytimecli.o (100%) create mode 100644 12.3 nodes communication/daytimesrv.c create mode 100644 12.3 nodes communication/daytimesrv.c~ create mode 100644 12.3 nodes communication/daytimesrv.o create mode 100644 12.3 nodes communication/makefile create mode 100644 12.3 nodes communication/makefile~ rename {11.client-server-print-ip-port-bothv2 => 12.3 nodes communication}/readme (100%) create mode 100644 12.3 nodes communication/readme~ create mode 100755 12.3 nodes communication/server create mode 100755 13.mail smtp test and errors/client create mode 100644 13.mail smtp test and errors/daytimecli.c create mode 100644 13.mail smtp test and errors/daytimecli.c~ create mode 100644 13.mail smtp test and errors/daytimecli.o create mode 100644 13.mail smtp test and errors/daytimesrv.c create mode 100644 13.mail smtp test and errors/daytimesrv.c~ create mode 100644 13.mail smtp test and errors/daytimesrv.o create mode 100644 13.mail smtp test and errors/makefile create mode 100644 13.mail smtp test and errors/makefile~ create mode 100644 13.mail smtp test and errors/readme create mode 100644 13.mail smtp test and errors/readme~ create mode 100755 13.mail smtp test and errors/server diff --git a/11.client-server-test-error- read write on closed socket/client b/11.client-server-test-error- read write on closed socket/client new file mode 100755 index 0000000000000000000000000000000000000000..423dc807544dbe18a7ddb2869fe98dd8ea766c48 GIT binary patch literal 9760 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 YjO6q=W_tJCV(R2Fr5j?_A&+_c4^n%~#Q*>R literal 0 HcmV?d00001 diff --git a/11.client-server-test-error- read write on closed socket/daytimecli.c b/11.client-server-test-error- read write on closed socket/daytimecli.c new file mode 100644 index 0000000..811d59a --- /dev/null +++ b/11.client-server-test-error- read write on closed socket/daytimecli.c @@ -0,0 +1,94 @@ + + +#include "../basic.h" +#include + +void sigpipeaction (int signal){ + + int status, pid; + + fprintf(stderr, "Sigpipe catturato\n"); + + +} + + +int main(int argc, char **argv) { + + + struct sigaction sigpipestructure; + sigpipestructure.sa_handler = sigpipeaction; + sigpipestructure.sa_flags = 0; + + sigaction (SIGPIPE, &sigpipestructure, NULL); + + + + siginterrupt (SIGPIPE,1); + + + + + 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; + + + + + + for (int i = 0; i < 100; i ++){ + + 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 %d bytes\n",ridden); + } + } + + + close(sockfd); + + + 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-test-error- read write on closed socket/daytimecli.c~ similarity index 100% rename from 11.client-server-print-ip-port-bothv2/daytimecli.c~ rename to 11.client-server-test-error- read write on closed socket/daytimecli.c~ diff --git a/11.client-server-test-error- read write on closed socket/daytimecli.o b/11.client-server-test-error- read write on closed socket/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..3753eb46716a25b19fa468b4766c269192eac56d GIT binary patch literal 2952 zcmb7GTWl0n7(T@UYXxRi6fdldkrFg+11j1OKnP4SjZ3JuHTXcLXb3aYG{@+2 zJRf>$TB~xfb%Fb{z0?4N@=@%}3dWu%MJ?+g@I}+&IVWpoI)oya&(HI*u(vGtBRv%D z&MT46>a_K^qvbP4%uGVlV*BQen9PX2+I=PZB2{C^LrkkuYMPPKl3Bge@B)JUHH(cI z5c%3gK0(<-jHUcJAtiqTqZ##N!aCH(?*c#8j6p(k8kAbXco^gVN}KBbtoBZa)$%q9 zRZD!|+`?V8)Oe2lMmkrSQG34#AG#uK*v+_qarzweqpK;Pynjl)KyDF@H};f+ue zrNVX9omiCQ{%djk;EFO#>nJJ1Vg;(JoT(^-(6M4+FaeOtMLa2aDSw6>$9W02;ueOA zg(32k%A4`5ehC)dfH4%CbNg+-<`TbB+mQdV^rzucHc=FDO>r+>c=O!G)NozXbt>*_X1~8Y4-B3A!%g)?BzS5 z2PdJHMm|4urN!*9P1}&;y5r=tx?|O`d`|B$w#x~<+c7(hc-oYA;EXY|=Fy{8Q}Zr) zhizpYeV1Iva#sAX;mAfdYh~-0nK2yAcC3u2kdszcuFuu6xRuEm@p(6eybU>lY8l6n z)4H5Ccm@E{XWK6^k1y!ao|lL&dHtM0Yi*Mz5&7|dJ(t|cnXNKG-?4K1;&6B z_d1Z`8iBayB3pr!_gP_IC+u{OVJ(rrux6|`dJTv>HF^<9{+|GGx4g*Xz)g8wP(Cj_U9gZxhmUJGC1p9xOuCjPD9YX!e4_M++d`<4rvn88t|DZV5`8Fkm^87%Msmf$~aqJ721~t Xz9Mj&K;QlvQ&jJZa7%SO)nWeuZ>KJh literal 0 HcmV?d00001 diff --git a/11.client-server-print-ip-port-bothv2/daytimesrv.c b/11.client-server-test-error- read write on closed socket/daytimesrv.c similarity index 100% rename from 11.client-server-print-ip-port-bothv2/daytimesrv.c rename to 11.client-server-test-error- read write on closed socket/daytimesrv.c diff --git a/11.client-server-print-ip-port-bothv2/daytimesrv.c~ b/11.client-server-test-error- read write on closed socket/daytimesrv.c~ similarity index 100% rename from 11.client-server-print-ip-port-bothv2/daytimesrv.c~ rename to 11.client-server-test-error- read write on closed socket/daytimesrv.c~ diff --git a/11.client-server-print-ip-port-bothv2/daytimesrv.o b/11.client-server-test-error- read write on closed socket/daytimesrv.o similarity index 100% rename from 11.client-server-print-ip-port-bothv2/daytimesrv.o rename to 11.client-server-test-error- read write on closed socket/daytimesrv.o diff --git a/11.client-server-print-ip-port-bothv2/makefile b/11.client-server-test-error- read write on closed socket/makefile similarity index 100% rename from 11.client-server-print-ip-port-bothv2/makefile rename to 11.client-server-test-error- read write on closed socket/makefile diff --git a/11.client-server-print-ip-port-bothv2/makefile~ b/11.client-server-test-error- read write on closed socket/makefile~ similarity index 100% rename from 11.client-server-print-ip-port-bothv2/makefile~ rename to 11.client-server-test-error- read write on closed socket/makefile~ diff --git a/11.client-server-print-ip-port-bothv2/readme~ b/11.client-server-test-error- read write on closed socket/readme similarity index 100% rename from 11.client-server-print-ip-port-bothv2/readme~ rename to 11.client-server-test-error- read write on closed socket/readme diff --git a/11.client-server-test-error- read write on closed socket/readme~ b/11.client-server-test-error- read write on closed socket/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/11.client-server-print-ip-port-bothv2/server b/11.client-server-test-error- read write on closed socket/server similarity index 100% rename from 11.client-server-print-ip-port-bothv2/server rename to 11.client-server-test-error- read write on closed socket/server diff --git a/11.client-server-print-ip-port-bothv2/client b/12.3 nodes communication/client similarity index 100% rename from 11.client-server-print-ip-port-bothv2/client rename to 12.3 nodes communication/client diff --git a/11.client-server-print-ip-port-bothv2/daytimecli.c b/12.3 nodes communication/daytimecli.c similarity index 100% rename from 11.client-server-print-ip-port-bothv2/daytimecli.c rename to 12.3 nodes communication/daytimecli.c diff --git a/12.3 nodes communication/daytimecli.c~ b/12.3 nodes communication/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/12.3 nodes communication/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/12.3 nodes communication/daytimecli.o similarity index 100% rename from 11.client-server-print-ip-port-bothv2/daytimecli.o rename to 12.3 nodes communication/daytimecli.o diff --git a/12.3 nodes communication/daytimesrv.c b/12.3 nodes communication/daytimesrv.c new file mode 100644 index 0000000..12c17fd --- /dev/null +++ b/12.3 nodes communication/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/12.3 nodes communication/daytimesrv.c~ b/12.3 nodes communication/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/12.3 nodes communication/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/12.3 nodes communication/daytimesrv.o b/12.3 nodes communication/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/12.3 nodes communication/makefile b/12.3 nodes communication/makefile new file mode 100644 index 0000000..16fdd6d --- /dev/null +++ b/12.3 nodes communication/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/12.3 nodes communication/makefile~ b/12.3 nodes communication/makefile~ new file mode 100644 index 0000000..ed76715 --- /dev/null +++ b/12.3 nodes communication/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/12.3 nodes communication/readme similarity index 100% rename from 11.client-server-print-ip-port-bothv2/readme rename to 12.3 nodes communication/readme diff --git a/12.3 nodes communication/readme~ b/12.3 nodes communication/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/12.3 nodes communication/server b/12.3 nodes communication/server new file mode 100755 index 0000000000000000000000000000000000000000..65d3aab96fb5539db3aaed12388f97c4fdbfcb4b GIT binary patch literal 9644 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 literal 0 HcmV?d00001 diff --git a/13.mail smtp test and errors/client b/13.mail smtp test and errors/client new file mode 100755 index 0000000000000000000000000000000000000000..423dc807544dbe18a7ddb2869fe98dd8ea766c48 GIT binary patch literal 9760 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 YjO6q=W_tJCV(R2Fr5j?_A&+_c4^n%~#Q*>R literal 0 HcmV?d00001 diff --git a/13.mail smtp test and errors/daytimecli.c b/13.mail smtp test and errors/daytimecli.c new file mode 100644 index 0000000..811d59a --- /dev/null +++ b/13.mail smtp test and errors/daytimecli.c @@ -0,0 +1,94 @@ + + +#include "../basic.h" +#include + +void sigpipeaction (int signal){ + + int status, pid; + + fprintf(stderr, "Sigpipe catturato\n"); + + +} + + +int main(int argc, char **argv) { + + + struct sigaction sigpipestructure; + sigpipestructure.sa_handler = sigpipeaction; + sigpipestructure.sa_flags = 0; + + sigaction (SIGPIPE, &sigpipestructure, NULL); + + + + siginterrupt (SIGPIPE,1); + + + + + 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; + + + + + + for (int i = 0; i < 100; i ++){ + + 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 %d bytes\n",ridden); + } + } + + + close(sockfd); + + + 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/13.mail smtp test and errors/daytimecli.c~ b/13.mail smtp test and errors/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/13.mail smtp test and errors/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/13.mail smtp test and errors/daytimecli.o b/13.mail smtp test and errors/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..3753eb46716a25b19fa468b4766c269192eac56d GIT binary patch literal 2952 zcmb7GTWl0n7(T@UYXxRi6fdldkrFg+11j1OKnP4SjZ3JuHTXcLXb3aYG{@+2 zJRf>$TB~xfb%Fb{z0?4N@=@%}3dWu%MJ?+g@I}+&IVWpoI)oya&(HI*u(vGtBRv%D z&MT46>a_K^qvbP4%uGVlV*BQen9PX2+I=PZB2{C^LrkkuYMPPKl3Bge@B)JUHH(cI z5c%3gK0(<-jHUcJAtiqTqZ##N!aCH(?*c#8j6p(k8kAbXco^gVN}KBbtoBZa)$%q9 zRZD!|+`?V8)Oe2lMmkrSQG34#AG#uK*v+_qarzweqpK;Pynjl)KyDF@H};f+ue zrNVX9omiCQ{%djk;EFO#>nJJ1Vg;(JoT(^-(6M4+FaeOtMLa2aDSw6>$9W02;ueOA zg(32k%A4`5ehC)dfH4%CbNg+-<`TbB+mQdV^rzucHc=FDO>r+>c=O!G)NozXbt>*_X1~8Y4-B3A!%g)?BzS5 z2PdJHMm|4urN!*9P1}&;y5r=tx?|O`d`|B$w#x~<+c7(hc-oYA;EXY|=Fy{8Q}Zr) zhizpYeV1Iva#sAX;mAfdYh~-0nK2yAcC3u2kdszcuFuu6xRuEm@p(6eybU>lY8l6n z)4H5Ccm@E{XWK6^k1y!ao|lL&dHtM0Yi*Mz5&7|dJ(t|cnXNKG-?4K1;&6B z_d1Z`8iBayB3pr!_gP_IC+u{OVJ(rrux6|`dJTv>HF^<9{+|GGx4g*Xz)g8wP(Cj_U9gZxhmUJGC1p9xOuCjPD9YX!e4_M++d`<4rvn88t|DZV5`8Fkm^87%Msmf$~aqJ721~t Xz9Mj&K;QlvQ&jJZa7%SO)nWeuZ>KJh literal 0 HcmV?d00001 diff --git a/13.mail smtp test and errors/daytimesrv.c b/13.mail smtp test and errors/daytimesrv.c new file mode 100644 index 0000000..12c17fd --- /dev/null +++ b/13.mail smtp test and errors/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/13.mail smtp test and errors/daytimesrv.c~ b/13.mail smtp test and errors/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/13.mail smtp test and errors/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/13.mail smtp test and errors/daytimesrv.o b/13.mail smtp test and errors/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/13.mail smtp test and errors/makefile b/13.mail smtp test and errors/makefile new file mode 100644 index 0000000..16fdd6d --- /dev/null +++ b/13.mail smtp test and errors/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/13.mail smtp test and errors/makefile~ b/13.mail smtp test and errors/makefile~ new file mode 100644 index 0000000..ed76715 --- /dev/null +++ b/13.mail smtp test and errors/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/13.mail smtp test and errors/readme b/13.mail smtp test and errors/readme new file mode 100644 index 0000000..e69de29 diff --git a/13.mail smtp test and errors/readme~ b/13.mail smtp test and errors/readme~ new file mode 100644 index 0000000..e69de29 diff --git a/13.mail smtp test and errors/server b/13.mail smtp test and errors/server new file mode 100755 index 0000000000000000000000000000000000000000..65d3aab96fb5539db3aaed12388f97c4fdbfcb4b GIT binary patch literal 9644 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 literal 0 HcmV?d00001