From 94be6252dd3c722e8e6bc8eb8b8884e5411d4dd7 Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Fri, 30 May 2014 17:55:19 +0200 Subject: [PATCH] iniziamo esercizio database archiovio.txt --- 11.client-server-exam-database/client | Bin 0 -> 13964 bytes 11.client-server-exam-database/daytimecli.c | 106 ++++++++++ 11.client-server-exam-database/daytimecli.c~ | 31 +++ 11.client-server-exam-database/daytimecli.o | Bin 0 -> 4344 bytes 11.client-server-exam-database/daytimesrv.c | 203 +++++++++++++++++++ 11.client-server-exam-database/daytimesrv.c~ | 41 ++++ 11.client-server-exam-database/daytimesrv.o | Bin 0 -> 5600 bytes 11.client-server-exam-database/makefile | 14 ++ 11.client-server-exam-database/makefile~ | 14 ++ 11.client-server-exam-database/readme | 0 11.client-server-exam-database/readme~ | 0 11.client-server-exam-database/server | Bin 0 -> 13656 bytes fun-corso-reti.o | Bin 2944 -> 0 bytes 13 files changed, 409 insertions(+) create mode 100755 11.client-server-exam-database/client create mode 100644 11.client-server-exam-database/daytimecli.c create mode 100644 11.client-server-exam-database/daytimecli.c~ create mode 100644 11.client-server-exam-database/daytimecli.o create mode 100644 11.client-server-exam-database/daytimesrv.c create mode 100644 11.client-server-exam-database/daytimesrv.c~ create mode 100644 11.client-server-exam-database/daytimesrv.o create mode 100644 11.client-server-exam-database/makefile create mode 100644 11.client-server-exam-database/makefile~ create mode 100644 11.client-server-exam-database/readme create mode 100644 11.client-server-exam-database/readme~ create mode 100755 11.client-server-exam-database/server delete mode 100644 fun-corso-reti.o diff --git a/11.client-server-exam-database/client b/11.client-server-exam-database/client new file mode 100755 index 0000000000000000000000000000000000000000..769765d060afdc7b688fff512868e08a1f036668 GIT binary patch literal 13964 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 ICCu1=1C)FGt^fc4 literal 0 HcmV?d00001 diff --git a/11.client-server-exam-database/daytimecli.c b/11.client-server-exam-database/daytimecli.c new file mode 100644 index 0000000..f169889 --- /dev/null +++ b/11.client-server-exam-database/daytimecli.c @@ -0,0 +1,106 @@ +#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; + int written; + + + sleep(5); + + int i; + for ( i = 0; i < 5; 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); + } + } + + for ( i = 0; i < 1; i ++){ + + written = write (sockfd, socket_buffer,r_server_local_addr_len /2 ); + if (written < 0){ + fprintf(stdout,"Errore durante la scrittura\n"); + exit(-1); + } else { + fprintf(stdout,"Ho scritto %d bytes\n",written); + } + } + + + + + + 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-exam-database/daytimecli.c~ b/11.client-server-exam-database/daytimecli.c~ new file mode 100644 index 0000000..239a866 --- /dev/null +++ b/11.client-server-exam-database/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-exam-database/daytimecli.o b/11.client-server-exam-database/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..459d3bd92d315c1bb5e211a9ffc90de2fdf5f513 GIT binary patch literal 4344 zcmbuCU5Hdw9Kg@)thucpJDK*S)rHuw56A37NETU>t2a^+Ww9WTyEAuoFV5UM-Ft?1 zjn#5k*~>U(P*3?_^!H1(1$)q4?(^JLI(C0Bu)SSx##Ts=Xx&){bBC; zpWpd^opWZ+J#$#!v8^YSVoFkMGwbveWz1OA(T9aP%$Bi!Hev+78`T?`VCt4p6E;RL zKZ^!NaQVUtXy-7T5wxx&{Qf)P@Xn14(BRu!|F+vk@byh-@1KTSE&U7{*7P%K2aG^J*}#nwaa;N+P}v_& zZRCtm+j$ZqcY+4`+3M6;Hkpmt*@wWZYiApI+N9;p zNp6>{T+!BsY$tDf_Q8Yh%eyygLuJ?F=4OrgZtj4^HOuo{kJ*mJ_m{crgng~xdfK4h z&vLHgSUF{-qphXoA)mu7t!QdROJwh7hAVVe(+2a}=p?tm`F3+Z=h+>Hu-D}>=nv)w z$15v67J~wj*zyRH>@%;tQELkee|7|r0 zfCuGWkwC+;zY*s~q?hQZu7*#PAvc!dld-qu;1bX=53U``17X7+hZcDx4V#DpX&=q? zG;oX=HNR7T+*{0#2O|~b{~Lv%tNImw5ft=)MgiIGlZ8GN;b@DZ+Lwqf2IS*NbfS_g zKV`cQ6lBr*XQcnD%22k^`u6~jOLYkkAP_Y#+&}bH{%Zg30Tx|*K|<)6WVLBvZTRK+uzpA2=WXxGdBYIi}|NiXbP_h>q{609$7 zg^`oX4GEQIi%GAerWa=4VW_2V`}H!m9QX=Sr#Qoa;khNZ7PO8$25KCC5;(?D{^G0y zwm!ige-CkSwk7aa68P=}j^FpV_^&7M(F9&h;C=#sD}f(L;4=xlp1?my;3pFJCkgzs z1pZY5XPq~GHpl$%c3|eX?K;fod3epU!kh5+wOGlt0oh|}&>pklZSHxMGH2xq_n9?e zb9p^raIvu2I9v?;&K-f3J@6=~%K-!|7G20$w5&4oEHjS@-3n&~X(;nrrCfP34C8RO z%-}JO+av_P=O}po;Z^1qUI#($LkNP5{>s#OjP`g$DEs}OqaedGMaf~QpgrFFmHoSf zV-1Sqexazm>YVyG#G=jt(3Sn?gyZ*G@dn{|#wz}UUY5ZRar}3A_gAnJ1 z|CUtzRfOM5_z>ZEXHxciC0F(Af-#gFv0nv!WnUtk)>9=M_fFX#i^MNraFF+jJ)Q4I zgwyz65Pm=StN7m#j(er}FN8lx_;teZzlgHGDY;q)4r3^baDhRh-?st6X`L%2S8?78 z-PvklPxEF8$Ge!S=QYCD5N;Dr + + + + +void sigchldaction (int signal){ + + int status, pid; + + for (pid = waitpid(-1,&status,WNOHANG);pid > 0;pid = waitpid(-1,&status,WNOHANG)){ + // server: child terminated + } + + +} + + + +typedef struct message { + char data [50]; + char nome [50]; + char voto [50]; +}t_message; + +int main(int argc, char **argv) { + + +struct sigaction sigchldstructure; + sigchldstructure.sa_handler = sigchldaction; + sigchldstructure.sa_flags = 0; + +sigaction (SIGCHLD, &sigchldstructure, NULL); + + + int listenfd, connfd, n; + struct sockaddr_in servaddr; + char buff[INET_ADDRSTRLEN]; // client ip grabbed redeable + short port; // client port redeable + + 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); + + + + 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); + + t_message m; // buffer message structure + int ridden, wrote; + + sprintf ( m.data, "Benvenuto" ); + wrote = write (connfd, &m, sizeof (m) ); // scrivo benvenuto sul socket + // check wrote + + + + 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); // print client address and port + + + for ( ; ; ) {// the server child reserve other requests from same client + ridden = read (connfd,&m,sizeof(m)); + // check read. it's blocking + + int fd; + + if (strcmp (m.data, "AGGIUNGI" ) == 0 ){ + fd = open ("archivio.txt",O_RDWR | O_APPEND); + if (fd < 0){ + fd = open ("archivio.txt", O_CREAT | O_RDWR | O_APPEND ,00700); + } + if (fd < 0){ + sprintf ( m.data, "Non posso modificare il database" ); + wrote = write (connfd, &m, sizeof (m) ); // scrivo sul socket + // check wrote + } else { + + write (fd,(m.nome), strlen ((m.nome))); + write (fd," ", 1); + write (fd,(m.voto), strlen ((m.voto)) ); + write (fd," ", 1); + write (fd,buff, strlen (buff)); + write (fd,":", 1); + + char port_char[50]; + sprintf (port_char,"%hu",port); + write (fd,port_char, strlen (port_char)); + write (fd,"\n", 1); + + + sprintf ( m.data, "AGGIUNTO" ); + wrote = write (connfd, &m, sizeof (m) ); // scrivo sul socket + // check wrote + + } + } else { + if (strcmp (m.data, "VERIFICA" ) == 0 ){ + + fd = open ("archivio.txt",O_RDONLY); + if (fd < 0){ + sprintf ( m.data, "Non posso leggere il database" ); + wrote = write (connfd, &m, sizeof (m) ); // scrivo sul socket + // check wrote + } else { + + char line [1000]; + char line_nome [50]; + char line_voto [50]; + char line_ip_port [50]; + int returned,found; + + found = 0; + FILE * fdfile = fdopen(fd,"r"); + returned = fscanf (fdfile,"%999[^\n]%*c",line); + for( ; returned > 0 ; fscanf (fdfile,"%999[^\n]%*c",line) ){ + + sscanf (line, "%s %s %s", line_nome, line_voto, line_ip_port); + + if (strcmp (line_nome, m.nome) == 0){ + found = 1; + + sprintf ( m.data, "%s ha sostenuto l'esame con voto %s. Informazione fornita da %s ", line_nome, line_voto, line_ip_port ); + wrote = write (connfd, &m, sizeof (m) ); // scrivo sul socket + // check wrote + + break; + } + + } + + if (found == 0){ + sprintf ( m.data, "%s non ha sostenuto l'esame", &(m.nome) ); + wrote = write (connfd, &m, sizeof (m) ); // scrivo sul socket + // check wrote + } + } + + } else { + + sprintf ( m.data, "Bye" ); + wrote = write (connfd, &m, sizeof (m) ); // scrivo sul socket + // check wrote + + break; // end requests from client + + } + } + + } + + + exit(0); // server child served the client. end + + } else { + + close(connfd); + } + + + } +} diff --git a/11.client-server-exam-database/daytimesrv.c~ b/11.client-server-exam-database/daytimesrv.c~ new file mode 100644 index 0000000..5a71bf1 --- /dev/null +++ b/11.client-server-exam-database/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-exam-database/daytimesrv.o b/11.client-server-exam-database/daytimesrv.o new file mode 100644 index 0000000000000000000000000000000000000000..c1574350917c43dfa93531ddbb15fa060be89ef4 GIT binary patch literal 5600 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 literal 0 HcmV?d00001 diff --git a/fun-corso-reti.o b/fun-corso-reti.o deleted file mode 100644 index 5b8cdd92bfc60b55aa5c99c0ca0d4290513ed60e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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