From 3fe27ea14e9982a88f14a116ce710c266e9b650a Mon Sep 17 00:00:00 2001 From: asus Date: Fri, 24 Feb 2023 12:00:23 +0100 Subject: [PATCH] wip client arrived --- a.out | Bin 17024 -> 17544 bytes mini_serv_2.c | 40 ++++++++++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/a.out b/a.out index b351613d608ba98fe863ae5ef3407dae7ace387c..f72d262eb1cfdb6515e03e4cdc2ff6e8f6fd10b8 100755 GIT binary patch literal 17544 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 B+wK4W delta 3499 zcmZ`+eQ*=U72lODTM{Oc?9lTEVA&9YQz}^w{(=|@>?23VZrx-&@gHfy!6LZD#u4&_ zOzRpVDe>i^VE54uX*yGACynWZiCu@_rU}TQLHyAVhhaJ-Wu{I_$~kot6I`MY!u9Rm zonw2Zr@8lb-}~)*Z{P0QTlLHIK%5Tb=k9P5{seVKk{br^`HdrO*Sl%^;Co)jpiS=$ z+8~#D9fzsjJxt-7*qyNG-AfjDlHMq(@#x*fyipgEMtI)x*E?UUedgtcz*Dip*^+O6 z+SMGPHHgh2m5(2 zWX*@x%zT*4$cLku`80ugfwpnFh10`~S}&O+=r-_MeYBJ79_I9ioK`^_%Ae%ut8-`{ zlw|qbPh&rqI7xFZHt?x|ZCR@!oK=&xFB0Ap>VmUb>vBTj@ZK=#4tI1#cEQJ4-LO4d zfc@FIm6TZUr>Bp#UqA~kZikRp2Y-fh&LA%uvYx^YTm%alhVg7c3>yAs>U6lVA}kpG z33LcKdTlOCNJ?*7z5b=9NlMR*B)@frZCCXI z3eK>FP={`78rX_rLNmk2=cMR4Dvke(=vw7V_;t~G%ZIn%-69aXZ)ut=UY2&^D~l6o zT2&uL88#*)nv$X^9D0?gV@xKClTx&Ik~rf_S!PJ7tY2t=6AWu0k$ZIVA zRQxF!{bUSgIKy%YW$ud}JC zS8r&;UhKngF%|o5YBgGNo=U5S7*G~3D818CqGv)MeG`Sz^j9u! zV@0YWx5i zHtTZRtnrm?jD+PJ&9XI-qHpr0amN0Mw)wup5-qY5@;Wb}%Fhv_FP74si964Ns$rrw z&6AVg2XXB4pM5S*$m3)1%RKwKadQkgt?O<}N2DdszO5(A;D%Wk%oFFVixBoy}S z-Q{TuKibn7>Wb`h5I^Z?-{85cgKbJ$l(CV0ZP_7+3~OgZI?r3$*QW| zh+y8#haE~0e4Ei*4HIs@!}XMmW=6S>uAysZeM`5!gqYdv~=__Uo~|Z8e)EG;bQr22>P4p z01Wztf~0Y=GGX^(!-6*l0^@#xj={Tr9}R-N;vvUL)KHQ~21?-j6>I2O7_1Nq{=~=S z67w2mn)wHeR|xdK{GyTt*D3_-Dx4C(0u@ZL7AYV@K@+X>0K?G-7~R&67#Cv37GZvX z@&y+g!^C4uZgG(qOZL3yac=V&PJhAaE1ZsVdXdo;R}Ei_mJhWmj6d4vtj|v;sz|1emBE!B)JcK66(%6auwos~>NiJG-9<-ru-w zOa1l=Z-uv#JRa_dgceA)huZN7A^Ze^?%H*^`n7aE22R%A4IkGQ!?Fz(VKY>2tRC&zc!-YL>O7RLg|bboS~@oQ+#Xi+ z_?Vo+ag>%Cg=O*znA+sCw;Iw`C<#>C`;A^dv<0f?D$=aXVK^S>vy~fL0^SJ-aDUKk zZ#K%V8QOx?bN_D4^H`j&UmwwGg^%j1>^rLT Ut_Wof)s7cy^fd = fd; new_client->id = id; new_client->next = NULL; - if (!first_client) - first_client = new_client; + if (!(*first_client)) + *first_client = new_client; else { - client = first_client; + client = *first_client; while (client->next) client = client->next; client->next = new_client; } } +void broadcast(char *buf, fd_set *set, int maxfd, int client_fd) { + for(int fd = 0; fd <= maxfd; ++fd) { + if (fd == client_fd) + continue; + if (FD_ISSET(fd, set)) + send(fd, buf, strlen(buf), 0); + } +} + +// debug +void print_clients(t_client *client) { + printf("clients:"); + while(client) { + printf("[%i - %i]", client->id, client->fd); + client = client->next; + } + printf("\n"); +} + int main(int ac, char **av) { int sockfd; int client_fd; @@ -121,6 +140,7 @@ int main(int ac, char **av) { fd_set write_set; t_client *client; t_client *first_client; + char buf[BUFSIZE]; if (ac != 2) error("Wrong number of arguments\n"); @@ -146,13 +166,15 @@ int main(int ac, char **av) { error("Fatal error\n"); while(1) { +print_clients(first_client); maxfd = sockfd; FD_ZERO(&read_set); FD_ZERO(&write_set); + FD_SET(sockfd, &read_set); client = first_client; while(client) { write(1, "1", 1); -printf("id: %i\n", client->id); +//printf("id: %i\n", client->id); FD_SET(client->fd, &read_set); FD_SET(client->fd, &write_set); if (client->fd > maxfd) @@ -160,11 +182,13 @@ printf("id: %i\n", client->id); client = client->next; } - select(maxfd + 1, &read_set, &write_set, NULL, NULL); + select(maxfd + 1, &read_set, NULL, NULL, NULL); if (FD_ISSET(sockfd, &read_set)) { client_fd = accept(sockfd, NULL, NULL); - add_client(first_client, client_fd, id); + add_client(&first_client, client_fd, id); + sprintf(buf, "server: client %d just arrived\n", id); + broadcast(buf, &write_set, maxfd, client_fd) { id++; } }