From 4c790f844390f74a15cc9d155bfabc1da623f8a2 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Sat, 31 May 2014 18:38:00 +0200 Subject: [PATCH] Implementato correttamente la select --- 7.client-server-select (COMPLETE)/client | Bin 0 -> 13704 bytes .../daytimecli.c | 78 ++++++++ .../daytimecli.c~ | 0 .../daytimecli.o | Bin 0 -> 3960 bytes .../daytimesrv.c | 187 ++++++++++++++++++ .../daytimesrv.c~ | 0 .../daytimesrv.o | Bin 0 -> 6512 bytes .../makefile | 0 .../makefile~ | 0 7.client-server-select (COMPLETE)/readme | 6 + .../readme~ | 0 7.client-server-select (COMPLETE)/server | Bin 0 -> 13805 bytes 7.client-server-select/client | Bin 13563 -> 0 bytes 7.client-server-select/daytimecli.c | 47 ----- 7.client-server-select/daytimecli.o | Bin 2880 -> 0 bytes 7.client-server-select/daytimesrv.c | 145 -------------- 7.client-server-select/daytimesrv.o | Bin 3152 -> 0 bytes 7.client-server-select/readme~ | 0 7.client-server-select/server | Bin 13768 -> 0 bytes test/test3 | Bin 0 -> 8563 bytes test/test3.c | 18 ++ test/test3.c~ | 24 +++ 22 files changed, 313 insertions(+), 192 deletions(-) create mode 100755 7.client-server-select (COMPLETE)/client create mode 100644 7.client-server-select (COMPLETE)/daytimecli.c rename {7.client-server-select => 7.client-server-select (COMPLETE)}/daytimecli.c~ (100%) create mode 100644 7.client-server-select (COMPLETE)/daytimecli.o create mode 100644 7.client-server-select (COMPLETE)/daytimesrv.c rename {7.client-server-select => 7.client-server-select (COMPLETE)}/daytimesrv.c~ (100%) create mode 100644 7.client-server-select (COMPLETE)/daytimesrv.o rename {7.client-server-select => 7.client-server-select (COMPLETE)}/makefile (100%) rename {7.client-server-select => 7.client-server-select (COMPLETE)}/makefile~ (100%) create mode 100644 7.client-server-select (COMPLETE)/readme rename 7.client-server-select/readme => 7.client-server-select (COMPLETE)/readme~ (100%) create mode 100755 7.client-server-select (COMPLETE)/server delete mode 100755 7.client-server-select/client delete mode 100644 7.client-server-select/daytimecli.c delete mode 100644 7.client-server-select/daytimecli.o delete mode 100644 7.client-server-select/daytimesrv.c delete mode 100644 7.client-server-select/daytimesrv.o delete mode 100644 7.client-server-select/readme~ delete mode 100755 7.client-server-select/server create mode 100755 test/test3 create mode 100644 test/test3.c create mode 100644 test/test3.c~ diff --git a/7.client-server-select (COMPLETE)/client b/7.client-server-select (COMPLETE)/client new file mode 100755 index 0000000000000000000000000000000000000000..b7ae7034a686df7538fc8a7af9147b94e58da925 GIT binary patch literal 13704 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 O0!~cMSrvNal>8S^J*Wu) literal 0 HcmV?d00001 diff --git a/7.client-server-select (COMPLETE)/daytimecli.c b/7.client-server-select (COMPLETE)/daytimecli.c new file mode 100644 index 0000000..4d88590 --- /dev/null +++ b/7.client-server-select (COMPLETE)/daytimecli.c @@ -0,0 +1,78 @@ + + +#include "../basic.h" + +typedef struct message { + char data[100]; +}t_message; + +void sigpipeaction (int signal){ + + //fprintf(stderr, "Sigpipe catturato\n"); + +} + +int main(int argc, char **argv) { + +//////////////////////////////////////////////////////////// SIGNALS + +///////SIGPIPE +struct sigaction sigpipestructure; + sigpipestructure.sa_handler = sigpipeaction; + sigpipestructure.sa_flags = 0; + +sigaction (SIGPIPE, &sigpipestructure, NULL); +//////////////////////////////////////////////////////////// END SIGNALS + + 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); + } + + t_message m; + fprintf (stdout,"Send Text: "); + fscanf (stdin,"%999[^\n]%*c",m.data); + int written; + for (written = write (sockfd,&m,sizeof(m)); written <= 0;written = write (sockfd,&m,sizeof(m))){ + if (errno == EINTR){continue;} else {break;} + } + int ridden; + if(written > 0){ + for (ridden = read (sockfd,&m,sizeof(m)); ridden <= 0;ridden = read (sockfd,&m,sizeof(m))){ + if (errno == EINTR){continue;} else {break;} + } + + if(ridden > 0){ + + fprintf(stdout,"%s from server\n",m.data); + } else { + + fprintf(stdout,"can't read from server\n",m.data); + } + + + } else { + fprintf(stdout,"can't write to server\n",m.data); + } + + exit(0); +} diff --git a/7.client-server-select/daytimecli.c~ b/7.client-server-select (COMPLETE)/daytimecli.c~ similarity index 100% rename from 7.client-server-select/daytimecli.c~ rename to 7.client-server-select (COMPLETE)/daytimecli.c~ diff --git a/7.client-server-select (COMPLETE)/daytimecli.o b/7.client-server-select (COMPLETE)/daytimecli.o new file mode 100644 index 0000000000000000000000000000000000000000..65ed8205b6c8490fddaeed5be22c7a2d7b932ea6 GIT binary patch literal 3960 zcmbuBUuYaf9LMK!XB%Vl$6Ei^hZVV+syPjs%7qY9)0h=&iPd0H>$$nxOP1z#kKH-* z2Q9S>``z|dBM#io z%xAv8KeIc3ZfWfB<86@$QzgQNS)->YW0zu$_K0YXuuj&&CiU{KlD_G;^s0a>NcHmhwN9unVW%iO zMfsjJ>{^=|Eth7&XK@vuY@wx@UL9N4>*$Z^^^tb0v-Pp{Hl|lfn6O@~ z_2?DIqb}lgpR37MwmkNWFs@F-8rpWDJ>N*7R9ot68t(aA#47&?E=4mi554--dPU^D z(t}Brzn1|^wU8N9uJb*9Ej?dYxdDK96)Np7ghC3dr}OYWz;ROsdbNsJhR!sFE|)Se zw2=_0R#@?JtkC!G`r;~DvDd!ah@6t`?vtOQ<9`e_^B+T@zPO4{70PeNw=wAreLJGN zw;^gQM10i+&zLp`wT!XAt(=*jwX`A2&RDLsxad4FF{};c9hV!!8uOg=36pE4>pCv8 zY?G(*+_C+>mUUb$?sc%VW7}q0sh%lxK@%~>PCVcsl}F}T4JQ=Z2XuH$#oPA+HKFlIa4OpG6y?DM#h zJ^=zWGiOp+*T|VF%>S)5aDYe6j)0>P*^fn=2gq?L2KK@;$Z#N!I~U4DX^&lugYOQ@ zZGOe}L5(~Rh8+q5sSn1wA2|99%C~FZ54IQ|KOrr;ba<9RXsi4cPC^6iA5=irSET)Y z0ghTMs(y^L#ejV53rO9xR-yE6-$2a^zaQEvd-eTp z1QvYvX!*KyYG8+yVE(OgM|rOdv@9pK3mERhV0>h);(yx#15iHntF31+{?5t7H@fxpnn$B8Gr{~?y@y(rsx4MPy!ntk(d^qSqvSQkiklRU*41`N+F zuE?{@T4{zyU!S&mU#NYI&bCw zyldG!t8QZE@r+a8EGuqN?19Tv%7WWGnM`FpxO%h9A4{d+ZnvG(tdllGc)XBVR{DDc z^2dVbgj!qJe;yxDa2w;;Rrq&+@^FFgNLC)X&9$pEJH2_A}8_KYtQV{lMiS3J%ltp!rzrUui1HNPw$7|2IW&35Ngx literal 0 HcmV?d00001 diff --git a/7.client-server-select (COMPLETE)/daytimesrv.c b/7.client-server-select (COMPLETE)/daytimesrv.c new file mode 100644 index 0000000..001096f --- /dev/null +++ b/7.client-server-select (COMPLETE)/daytimesrv.c @@ -0,0 +1,187 @@ +#include "../basic.h" +#include + +void sigpipeaction (int signal){ + + //fprintf(stderr, "Sigpipe catturato\n"); + +} + +typedef struct message { + char data[100]; +}t_message; + + +int main(int argc, char **argv) { + + int listenfd, connfd, n; + struct sockaddr_in servaddr; + struct sockaddr_in client_address_struct; + unsigned int client_address_struct_size = sizeof (client_address_struct); + + +//////////////////////////////////////////////////////////// SIGNALS + +///////SIGPIPE +struct sigaction sigpipestructure; + sigpipestructure.sa_handler = sigpipeaction; + sigpipestructure.sa_flags = 0; + +sigaction (SIGPIPE, &sigpipestructure, NULL); +//////////////////////////////////////////////////////////// END SIGNALS + + + 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); + } + + + + fd_set fd_set_1; + FD_ZERO(&fd_set_1); + /* + void FD_CLR(int fd, fd_set *set); + int FD_ISSET(int fd, fd_set *set); + void FD_SET(int fd, fd_set *set); + void FD_ZERO(fd_set *set); + */ + + struct timeval timer; + timer.tv_sec = 99999999; + timer.tv_usec = 0; + + + int clients [FD_SETSIZE - 3]; + int i; + for (i= 0;i< (FD_SETSIZE - 3);i++){ + *(clients + i) = -1 ; + } + + // FD_SET(fileno(stdin),&fd_set_1); // control stdin (fileno = 0) + + // add listenfd to monitor listen socket + FD_SET(listenfd,&fd_set_1); + fprintf(stdout,"Added listen socket %d to monitor\n",listenfd ); + int max_fd = listenfd + 1; + + t_message m; + fd_set backup_set; + + for ( ; ; ) { + + + + fprintf(stdout,"waiting for non blocking fds\n"); + int ready_fds_to_read = 0; + backup_set = fd_set_1; + for (ready_fds_to_read = select( max_fd, &fd_set_1, NULL,NULL,&timer); + ready_fds_to_read <= 0 ; + ready_fds_to_read = select( max_fd, &fd_set_1, NULL,NULL,&timer)){ + + if (ready_fds_to_read == -1 && errno == EINTR ){ continue;} + if (ready_fds_to_read == 0) {timer.tv_sec = 99999999;continue;} + // write code to inform client that server has an internal error + exit(0); + + }// wait for nonblocking fd in read set + fprintf(stdout,"ready: %d\n",ready_fds_to_read); + int flag = 0; + if (FD_ISSET(listenfd,&fd_set_1)){ + ready_fds_to_read--; + for ( ; ; ) { + if( (connfd = accept(listenfd, (struct sockaddr *) &client_address_struct, &client_address_struct_size)) < 0) + { + if(errno == EINTR ) + continue; + printf("accept error on listening socket\n"); + flag = 1; + break; + } + break; + } + if (flag == 0){ + + /// operations on connfd + int free = 0; + for (i= 0;i< (FD_SETSIZE - 3);i++){ + if (*(clients + i) == -1) {*(clients + i) = connfd; free = 1; break;} + } + if (free == 0){ + shutdown (connfd, SHUT_RDWR); + fprintf(stdout,"Can't server %d. Too many connected clients\n",connfd ); + + }else { + FD_SET(connfd,&backup_set); + max_fd = MAX(connfd + 1, max_fd); + fprintf(stdout,"Added connection socket %d to monitor\n",connfd ); + } + } + } + + + // operations on other ready to read sockets in select + + int ready_fd, ready_fd_index; + for (i= 0; i< (FD_SETSIZE - 3) && ready_fds_to_read>0; i++){ + + if ( *(clients + i) != -1 && FD_ISSET(*(clients + i),&fd_set_1)){ + ready_fds_to_read--; + ready_fd = *(clients + i); + ready_fd_index = i; + + int ridden; + for (ridden = read (ready_fd,&m,sizeof(m)); ridden <= 0;ridden = read (ready_fd,&m,sizeof(m))){ + if (errno == EINTR){continue;} else {break;} + } + + int written; + if (ridden > 0){ + fprintf(stdout,"%s from socket id %d\n",m.data,ready_fd); + for (written = write (ready_fd,&m,sizeof(m)); written <= 0;written = write (ready_fd,&m,sizeof(m))){ + if (errno == EINTR){continue;} else {break;} + } + + } + + // test if client has received the packet and exit(); + //the client implementation should only make a read after the server + // write and exit + for (ridden = read (ready_fd,&m,sizeof(m)); ridden <= 0;ridden = read (ready_fd,&m,sizeof(m))){ + if (errno == EINTR){continue;} else {break;} + } + if (ridden> 0) {fprintf(stdout,"client from socket id %d should be dead\n",ready_fd);} + + shutdown (ready_fd, SHUT_RDWR); // SHUT_RD - SHUT_WR + FD_CLR(ready_fd, &backup_set); + clients[ready_fd_index] = -1; + fprintf(stdout,"shutdown socket id %d\n",ready_fd); + + + + + + } + + } + fd_set_1 = backup_set; + + } + exit(0); +} \ No newline at end of file diff --git a/7.client-server-select/daytimesrv.c~ b/7.client-server-select (COMPLETE)/daytimesrv.c~ similarity index 100% rename from 7.client-server-select/daytimesrv.c~ rename to 7.client-server-select (COMPLETE)/daytimesrv.c~ diff --git a/7.client-server-select (COMPLETE)/daytimesrv.o b/7.client-server-select (COMPLETE)/daytimesrv.o new file mode 100644 index 0000000000000000000000000000000000000000..68316e996318560c045479dd3a636e66312aa0f9 GIT binary patch literal 6512 zcmb_ge{38_6`r%*#Br0J(*|(UmToK3IFK9(G*uEs&84x)A`)amQ&K4?Uf->Ar`osX zZZEMTkv2LnuxzhbKotK0C;}lxf}$W%#iVj_c7aPPs9XwC#2=MKh2&t63IWBCl;gd5 zGw0{^T})9&x}EvHdGp?zH*bE}&vx$nR6`^pbcu+^#XQoi5MwLn+i}^9i&dgU95nqu z`Cq>E#aFPg`^nFnr~Y#GZXx{f!+)(*O#h`WsFG&Tw5}ZnnSSTYmQvYkt5hnjh|6C0 zyOj#6D|<7lWfmoQ5n0p!)#X)C&mbsBoel1q%ZMa3-;&~&(DTa;y4Ux%fuX`Ue#KDD zVP>(jWR_7MI1_Kiy0_d}Y7q09{mx&Qfrs-j3#Dc=0H?~*c=SR^wR-)|Nwc`W6i9;? z<<$JwRi{^~ZJLBH-2o<-kQ_s|NNe#W@gI!q8>WBb)^+no{>|O~uRHu7?u04&-;Ki; zVk)4jO#kx^Xf{I&N0+_(Rcm&AAlv4sSzO~`9|jy}7nv%{kp+$ZZ!&V@;Bsb zv1^xCikg!XbIZ)clo|Z&_vlP;8sqD~G4ZblC$6oHyjJ+*t_`nU#+5Mro8ai1Z=3!f z%oTqJgZ{UFi6ee4tp+%AL8DFob%?5*rwlFGE0iL>XMl2(WKDlkioo)TdCy_20lm)nJB)hHyD zOc6=|e{$mA4^I4fZDgu2y=%ji>0kFJ%r|eE{?)>CWVjR^J_l)5coD5cW+Uh_o-D8v zr)WHwuEwGRdJ5zC6+;iRNW3~fXYvd)7nBvorJGT&1BkM>5eGtH8|kU~8!3PwSMssC z0+WGSI4zy{ zA9t=CA>A%^MJVgGPe%7o(iUCXo%zUJdmH9aH#So;c+uetO9=5fvAn@UtJc{Th$XYB z6D+E1x}A5vXMzoq@V$L#uUPDo6n0!pLfCocZ3c2SHlK3&O-suc#&MK5`KruB*^a(2 z42mzoPpI=SD55>cdNjV^{Jgz^N8h7EC|?-IFFAC3?eEicPd>abrQ}o>T@%RiT@lE& z;i#LSui+1v}tJDD*{YDc!bKp)w-KI|$ zRX|shPZw3-jZj}JR)IH4sEyEBLI$C8gxU$6C$yQ+7@=*1N`&Hst`IT_O%duMbd}H{ zLeqr03C$2n5qgKv0HHZTgHT=j%p9GTLgaJSQG17xw1(Vtzn#k-Gj|;!Y!%a`Jsi zqsKOqFq0OMOXc09bG&LmtJu3|&km#gU{5~d=0CnKow2fx@o4O^*e5q_$xCwU2EsJM zHB^bni31`s*c!QSdGbqFM!{(cCjh-Dntj_v*I z!A&{WN<0GsILuBR>CIaGwlw@cd<@Wm*Y2{AuDHT$DP5|)P1P1P?t?1KVb7s^sDDPj zZiToLAlkv$VQHgEJOVZH5U~a2aLBIi4BOfW9jNpF9lr&}qJ4Z(@Y1d9r?8V1?Z2kB zLjy%NYeLmmaKcbNMpgBz)#>^P=+W(}5Hzl<@tnhUSoRBw3;RE(#vckP2>X8k`ol5B zA@O@@pq>}1!?Ak2Ucc4Ag=3E+yVT#w76Mkn{v!_ij^cAs8Z@RlQ628Xuzloe**_0| zd}H}ORn>3UezhaiK)ELIH~H2Lb%DLwS{iG5g8tQtF!E}1gbXx_GxFNs(}|6|2#{c9EeDU;{=UuHbl{}$u%sM7jxFdp+!^ZH+l z=s%vBn*XpmN|47ROY`d$ul-yPeONX!dG6<9jOTuujK?ck>;GIx|0kq&A)aFLTz@y? zx&E!_I27$?Tq1ZIDIP0)V`;kw82R^P`OCaoEpzF8?LPYk#6DUk8~ypVv1T&;9uc|{Kj*I~u$d9|x~C73*)*AV0RyaLAaeE3I5zdjdkGI_3lwK~LcUR=Kc7z^_F N( literal 0 HcmV?d00001 diff --git a/7.client-server-select/makefile b/7.client-server-select (COMPLETE)/makefile similarity index 100% rename from 7.client-server-select/makefile rename to 7.client-server-select (COMPLETE)/makefile diff --git a/7.client-server-select/makefile~ b/7.client-server-select (COMPLETE)/makefile~ similarity index 100% rename from 7.client-server-select/makefile~ rename to 7.client-server-select (COMPLETE)/makefile~ diff --git a/7.client-server-select (COMPLETE)/readme b/7.client-server-select (COMPLETE)/readme new file mode 100644 index 0000000..556cad5 --- /dev/null +++ b/7.client-server-select (COMPLETE)/readme @@ -0,0 +1,6 @@ +SERVER NON RICORSIVO CON UTILIZZO DI SELECT ED CHECK DI ERRORI + +il server attende una connessione dal client +il client si connette al server e invia un messaggio +il server lo legge e lo ritrasmette al client +il client lo legge e poi termina diff --git a/7.client-server-select/readme b/7.client-server-select (COMPLETE)/readme~ similarity index 100% rename from 7.client-server-select/readme rename to 7.client-server-select (COMPLETE)/readme~ diff --git a/7.client-server-select (COMPLETE)/server b/7.client-server-select (COMPLETE)/server new file mode 100755 index 0000000000000000000000000000000000000000..6b4093fdc8c7e016b9695ee679fad261a56ad557 GIT binary patch literal 13805 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 literal 0 HcmV?d00001 diff --git a/7.client-server-select/client b/7.client-server-select/client deleted file mode 100755 index 1480f8374d930190767fcd53370d1e98ec749721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13563 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 NCn%Sl%6@Z7{u7P)YIgtt diff --git a/7.client-server-select/daytimecli.c b/7.client-server-select/daytimecli.c deleted file mode 100644 index 37ce25d..0000000 --- a/7.client-server-select/daytimecli.c +++ /dev/null @@ -1,47 +0,0 @@ - - -#include "../basic.h" - -typedef struct message { - char data[100]; -}t_message; - -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); - } - - t_message m; - - fscanf(stdin) - - - - - int ridden; - ridden = read (sockfd, &m,sizeof(m) ); - - - - exit(0); -} diff --git a/7.client-server-select/daytimecli.o b/7.client-server-select/daytimecli.o deleted file mode 100644 index 1b032de2514852ec5ff632383b9f3e6f90441b3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2880 zcmbuBPiP!f9LIl~U2Tj>v#nKxD9pi?w6#-%HE1YdYZyC1Q$k_egGxKuoppz1XO@|_ zkOV>xp~A2%s8>DY=%I%k3jK3PmL6PBQV=|ciqJznc=I6C-|x+P*>*`=J*Tl{2LaNZc4b_ zUmo zv$fT(FS=(hdA<_{#yNA|{NT)7SHcfZCUZDJy3q=oSD>(7F3e0G8UF@fgSU{;LAFD$ z#f78gug8|AUX}z;X0*{3&MJ-q1=HBlUg)klrf}BlbV6H|Hm|>7i>Os5h`ncu? z!Zj~muAPa5Q@@D;l;*asH$$iG>Nfv(G_U~4Kh&)XR@Er4P5CsGm{0CZ1|$AdzVQH6 z+AV0W;z4~BhBpbKy^9BNwp|Is0l^GQ_kRy#sOEpopTk^grDUR)nC_px(OSQb`xqU{ ze_sPNTB_jb6xWxf$4_uw`#iLh7Ni!_vDZ|7I$Y;}#EYVz)_(~0u9R5xYKbgbN=5X3SS$(TH+|J?4Ih^)KR{bw?cq50y=!<05q3w7+bh;t} zcij`}TLg{>JZRxpC>ni`pc8t&XzDK!gs#&_R(%n408gz5BGCxC0-7ooB|wEvX!x;u z;Vn5OX|iW%?Vsm~onxH#s^)aR$Y>kU9@6|OK{Q>To*UWc$spr-ef>K~b$I=6S^O0G zy8ic!)4Qm-{6~dzsx!^_ujrF$J@d&Fepe&K({t2y{$!l%DXRCJ;_0_Z$4@G*>t9y+ z$5=eS-WkSu{dvZZv-;N - -void sigchldaction (int signal){ - - int status, pid; - - for (pid = waitpid(-1,&status,WNOHANG);pid > 0;pid = waitpid(-1,&status,WNOHANG)){ - // server: child terminated - } - - -} - -void sigpipeaction (int signal){ - - //fprintf(stderr, "Sigpipe catturato\n"); - -} - -typedef struct message { - char data[100]; -}t_message; - - -int main(int argc, char **argv) { - int listenfd, connfd, n; - struct sockaddr_in servaddr; - - -//////////////////////////////////////////////////////////// SIGNALS -///////SIGCHLD -struct sigaction sigchldstructure; - sigchldstructure.sa_handler = sigchldaction; - sigchldstructure.sa_flags = 0; - -sigaction (SIGCHLD, &sigchldstructure, NULL); - -///////SIGPIPE -struct sigaction sigpipestructure; - sigpipestructure.sa_handler = sigpipeaction; - sigpipestructure.sa_flags = 0; - -sigaction (SIGPIPE, &sigpipestructure, NULL); -//////////////////////////////////////////////////////////// END SIGNALS - - - - 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); - } - - - - fd_set fd_set_1; - FD_ZERO(&fd_set_1); - /* - void FD_CLR(int fd, fd_set *set); - int FD_ISSET(int fd, fd_set *set); - void FD_SET(int fd, fd_set *set); - void FD_ZERO(fd_set *set); - */ - - struct timeval timer; - timer.tv_sec = 99999999; - timer.tv_usec = 0; - - - - for ( ; ; ) { - - - if( (connfd = accept(listenfd, (struct sockaddr *) &client_address_struct, &client_address_struct_size)) < 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; - int ready_fds_to_read = 0; - - FD_set(connfd,&fd_set_1); - - for (ready_fds_to_read = select( connfd + 1, fd_set_1, NULL,NULL,&timer); - ready_fds_to_read <= 0 ; - ready_fds_to_read = select( connfd + 1, fd_set_1, NULL,NULL,&timer)){ - - if (ready_fds_to_read == -1 && errno == EINTR ){ continue;} - if (ready_fds_to_read == 0) {timer.tv_sec = 99999999;continue;} - // write code to inform client that server has an internal error - exit(0); - - }// wait for nonblocking fd in read set - - int ridden; - if( FD_ISSET(connfd, fd_set_1) ){ - for (ridden = read (connfd,&m,sizeof(m)); ridden <= 0;ridden = read (connfd,&m,sizeof(m))){ - if (errno == EINTR){continue;} else {exit(0);} - } - - fprint(stdout,%s,m.data); - - - } - - exit(0); - - - }else { - close(connfd); - } - } -} diff --git a/7.client-server-select/daytimesrv.o b/7.client-server-select/daytimesrv.o deleted file mode 100644 index d378ae74a6a6fb403bc32c00a203dd0e5c2af67e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3152 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 IpIIgU4Zon<^Z)<= diff --git a/test/test3 b/test/test3 new file mode 100755 index 0000000000000000000000000000000000000000..a13739ba2de289eab1c0d842990cc9f57130666c GIT binary patch literal 8563 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 +#include +#include +#include +#include +#include +#include + + +int main (int index, char** in_data){ + +fprintf(stdout, "%d\n",fileno(stdout)); +fprintf(stdout, "%d\n",fileno(stdin)); +fprintf(stdout, "%d\n",fileno(stderr)); + + + return 0; +} diff --git a/test/test3.c~ b/test/test3.c~ new file mode 100644 index 0000000..802abaa --- /dev/null +++ b/test/test3.c~ @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include +#include +#include + + +int main (int index, char** in_data){ + +char a [100]; +char b; +char c [100]; +char d [100]; +sprintf(d,"eeee"); +sprintf(a,"alfred "); +sscanf (a,"%s%s",c,d); +fprintf(stdout,"%s\n",c); +fprintf(stdout,"%s\n",d); + + + return 0; +}