From db27c5bee9c3082297f92a3c7909d791eb591144 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Fri, 3 Sep 2021 13:54:06 +0200 Subject: [PATCH] nouvel algorythme avec reponse du server fonctionne a peu pres sauf eof --- builds/client.o | Bin 119296 -> 119448 bytes builds/server.o | Bin 122376 -> 121744 bytes client | Bin 135288 -> 135320 bytes includes/client.h | 3 ++- server | Bin 85544 -> 85376 bytes srcs/client.c | 59 +++++++++++----------------------------------- srcs/server.c | 57 ++++++++++++-------------------------------- 7 files changed, 31 insertions(+), 88 deletions(-) diff --git a/builds/client.o b/builds/client.o index c04b4b1d5347169eb7fa0ede6c31b35487219d94..c0a30593192203e2fc6a582e8b321a283b100bd4 100644 GIT binary patch delta 23817 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 delta 23253 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 SP0HfakdtbBmMe3_)cSu{s~c1R delta 28658 zcmaK#34DxK_s8c>ND$jlVq#0|u_Y5Kb_Nkch={GRj1lWtW3O$DeP@z#N-3d1E$u(j zT1r*g+N-2!i!N`piuCOgefv^N`#*QinTP**`~LI!)RX!C&OLWK_uTtDGnuYG9J2g) z$odB65^v@-EE|;R4NAzo7}OH~3lCZ`?@8wRpq5qF5BaEHw-vYX<*MQ){8@BTt?>V{ zen@7`Vlh!nABIe?Rql{qD0kxIiZge$?HT`T{oCo{rpzwIeC3Yl7k=%>f0;sqGj9~D zsqW=IDz>GVr^6tv@y|xSsx1$TnM_smD`npnWHJT${%0P&>_jgw&o^29a$_!HYRc2vz+;&48dCc>HKfe{6C!QgwUGzVRk9_E)NfPWm7GQCk)owp9YQ)%{9Y zzXAT!l7CTK&KtI6*_LW4n~9w=`-WBPLnSxh#q1kss^Nc$8vVHVsBD4l*ghfgmkR3u@iPOys4>!HK=Us&^Dp$LMHoZi2haPVSl`K(V+l&tT?{52I`WGb@l~{JnWG<#s&82hu zw)&uSX2;Xk%o<(8V!Ar}CMI?65fN*0I=k8X$2+?wCfWNoi;b|EI`vC&CUxo_-=|N+ zvtM&vUF{K>zU=n7J4U@wA@ivxCil>+uY*dZO`4eIn&zA^b#(6TxdVbSyZlfgxAB4= zDs%d&mbtHZ-%*(}yfrdAzZsr8dC|ernc=tV<g(v$FTP7e%&bxP zV{)c+&h(D1lsm#VA}IILE2oQfJ0o&0W}hijag1x? zi18z*IBllDZ?U=ObNd(1JhCP-s5zF2I=VHqtkc=0Q=+qrBf;s6u)Uah^W)8#Z=dqz z4m>@fRB(zT0Xv%e`Q^rza$OVqwrD;uVAwLZ(yih_7HpWax1)D_MBta)_P2voruo(j zx&41Qs4|1^*7NwI&tA6tQgi1r!REoGLvSW_9Jb}T^oMyspX!(W`e4@mOD3Std#2B2 z-M@eXdf#XI7Sc0U-L*y?XIua34%kk5X8RTE8*>lbZB|iT%q)0Zzhq$9Y|FGf2~+Rt ze_ijDHkm4zI+_AnV2y5IzKI`{x9Z%>~c-lV*QrYnu_E=QY!ST zzq6XcY9QS`^0%{Crg|EtLiNA7F;6o}*BU$88JK^Y$(fLt)XARcOzPS-CBCn-uf0=Z zyc7N`sTx&!7ONAp zB$rZQDuFJk;MK2Y&?^sJGW^iGlS@etZ~CpQr~Zq4ft*~W%lCBoi7t;ol~!TaVmvAV z&wuexX|QS8!ZL0QrmOhh6PBxh3uRATQ92;o1n2gd+C1m(^XJ^zh5bXWrib8x*3BlK z>Q8nTpL4YCxdNA;<8L$9{rK`Ze)hlci%_JyfAu-}#&gB4gAe60-#u5`HK$UPJM}3~-fEVdjwCFuRNzYOPtH^ftn5Bov{U<2M&^hmc=5K!7VTymzie ze1Nbog5I$AB2%-8G$0fzwbieso)DBy&QJ=(d)#k@e~E-;UZ*dx$ZoY+X;C-t@eZ0f=xZx zimcqiYU*m@GX#HBf%q!HZTb|2KN|&qce@{(vINhG_HziUfPvF*3>keWjGCqpzbJT# zk;K0gd^V(4P|>zFaU{RM=fS}6c)i3U1doCI3OK3j(@1V5OUQwPLK=H*@ca}5o5IvObKmaJu!@?Yu0vK8m0->9Mupzyeg+C324z(Vk?naO&KL6T z!33^DKKh0QR#o0ybthz4)r`oUVWd^keZilA%WcEyb#=(Aie);6tL17RoC{aG)j>!{ zWZm;7S?m%e4?z~n=0RR~uc{iVJ_Tzvm0<1?2g9qWrs@Rvs$t=3yfw-6y$|xL;o44s zqH1cUS_xyTWBh-%f@(?=xh@HEP*#_rKwox(r3O}1H33p zpN{lTVEkT;2Xige6eh>3640`iYG5<hG;L_QOY6vg@sB*14TqgW_+DqYx{ zBM8hCJc&;%d@=kKP&?sLZ53s$wUtV(6NM{+r4EkB7+&VD33&|IwG0`=cMJI>q-(i2 zZ&JBJ-T_%CJKh;Y`~x9J*$A8x{CDo*1;H~x)x~{y#!%v43warb&3A&Y1s4{>lZme` zo=kq>(vOAJ0w)0_mfmL^D*r9vp0cRB(5jwFP@BM8Pld(4 z&;5-PMLyyV$)jkc9&o-MuCk$=_-c}0@Bf) zb;BHzrwaKpWNEo&49OlL_lA7km}@?gR|&Zp=R}|2M|kPVlX45NHNe{5Vs|@5v1Z`X zvN?-tlLzUA;M1~|4~EA?>2DxU%Z*x4=`%v!3`HnAZjT`Oijb?lO#Hgwv-#HSTfz50 zaun9qi|@UD6!OpDMcEU>8_feDui@IB3Lce3tq2l{y)@tUloWi)D6%gn__;(shp>jq z;`xFHtg0}I;LSTy@H?FA>I>e6Q(hCnEAOF3G!uLQEi#X(l@J=&r2-uU@6?WXyx_O` z5bq&)S-wR|7JNJB@&SGx`fLZ;4z@-(Y0kdnPi~*H!KLK|+>A-W?Nsn-c_-h!&k=GO zaTQHX4e`D_j(H%4E};>l{CuzDT5T7HMa;jobVLk`N0?L6=w z33*ya@_J726a9!^5_~IInqX~L`ILH7$UDHU<#%|r?+E!1NJm-y1S^_gzwJD?e+erO zOFUihuX$6RDfmAjN4vY* zor*0Ia!XEMD+G_=4Q-v^--9Iv^HAgfa`&2$Ya|oT5`1$S@!f(S8czIx;Ey7R=L()z z-Opin3_g5FeUXel5JpQOAKPesi@SC~$n!wiR9JXCFQ_ksTxJ5q+Ei0p1zwi-gg(3u z)%uIzd%%Zo9Zy%0{8-2>rw~`g=o&c24k$;jLj*qwMK%@fDxXQRRmiP65U(lt3yX=% zoAvCS#2X3wJK&AQu{zX@gB&ft%gd;?~xVnWySDl08DU)7E5KBKXf7qN@Z?<%#eKe!C6%2f@#g zABby?A@_DKGTJGOhJdR%uIcpgB)==}Y}c_#)(^nQb+n6M6`<)#+3`S@6zajl(;q^}O8E zgxrbGEMo<~KcC!95POME}IO~~cvQZ?CvH*yo-C-_I;MR%Ul2_zpDvaLVy_XYnXjQB@__empuPVl#< z6Tc+*&rAIr!dl@`u~t1Yx+#o;d7mf{{Bb3+zaw~X72-b$9<+t{Z-QT;lT1U?A40G+ zpaOph{tD!`!b3+_xYr6pEv6e;g$2_!uvi@Ye670RqZX50ZNb|vAs!|8yL@{YE%-?~ zNCLFR2iCXSQ{gtkD4myyUGOy%$UZ^vu29q()9k!NDAfkjY}vMC<`iaYAh``L@mn5} z#|il)cu`hUVN)ASbf@{Wu}D}YL4kIX#^=m+LjDFUZBdRIOLe>^{YpsXycB-jk0^ehPC-k-psN6llf8ay^ zFM|IDzIK@8mhtL*EaayAcu0ki+dya?g6r)t^4@PnxT27oFC}gjd=0PWnu6Eld|p@Z z^{vTIBf%GfpTn~DxXXohC!;uF^fBbL$3*r1V3IovIgUfeA$T#iPZE4DSURA)h|%P3 zkdW0j;x56X`BXky@E;)^-C4KVsMu5?e*#%rj(CG)kB}chzLvjQL-Hyiw*%D?(e%=RrC#>zy{bbL%-;mcqx|TyY zi%YMEAq!#0j|6@Je$vpp9;Q}?gbzrUPY-6kRFe1IoN}Y3WaT@6aqzpyGIguD0nC@ zo4*9_!Vw&-NC+&5m^uE}4NdX^^yv*`_<|_V4{Tkrz4!UPua=O9cA;WXf;SjJJVx-q z+K>;e1LM(N*dL~df-_xlyXjD$oF)n*I}~9X9p&RmP8D)%4qEx-I-B#^7-5g^KPO;t z-sIaT`Js$m;7!1gS8l3JKANt?IVD4QbwYvmIf8 zLhcR) zT5iHK@r96c!O{comRo?m2U@u(ahrYr;U*7pBf+aRBS*1<_gzK2mEfu1O2qCLb|yJN$jRW-^4Z2D z_Y-ng$kX!YqexB@@+BzJ@^9-%4yB7R`$Z7h6QjCk0&zZk8*)q%@iL-VIgZyC1b+lx z?QYy=;=B$Gcjfu4DHrU0UQ~QGGVHfQ0lKr!9!Bo?2G5Xx2TL!Mf8mgpx#SkuwLEee zm6pepR*;Ue=e3F?%VSFM6yh@Jyc0)U_MyaR;vDKmBjY)F$)q!DxZl3vf4qFLq4|7dX}S4F4~_#^~1-@J^2PehIZf45Ze#m zv3Y?vP8q`=@v4;xs4f(|fnoEMle=7_%@ZT~HF*1@*Tad#WemRyIVd~&apQTB8*N=an~KR8cE3zq#&AAZ z2B@&^57}OZY$$hKhU}w`4B6`~U_F#`qY@tC1I((MJ3*|6mM&LcZyg0nit6v^Rkpcx;&Uux1rjVzA zWeCcDr4yHVX%5)6e2))3Z;R4DKsw6m2H3~rUFG&6Dn=DT{t!Hf90dG?Y?yV{7Ahgv zPV<3|A4Fwvu%)$ zvg2`M;-3h4#4rL^1P|d^y&?Es$k(;KHIn#UArArNLK(QWe+xMdY+C-6Gfv=d%u1n| zP5|4$rR9XFRIGxcYe2pVJ}swCA{-&)?vUrg_uS7w(P$jK%@B!)XIn*H7;@piJ%*gf zg?}B!4p-5`ue2jsrlr?-%B8zsv;W>*)JEbmkCab>N5kps3QmIHPZinM&3Zh+)T0e)V=#HU_E_y!6_VzXN|p>m0IG30Y#8HHom za0hW---g_lgU%(2tsYN+Wy8KYq@z3Qie)6v5XDYHmX;T`Ccaq6w;*53^$rl1p}Y^2 zUMCA7`8B+dv6=?S^YGO!aG_>>P?L(vMS=@a%kNrAmQ%kT^0Zt9NS0Io7A?>nkUR#f zIslP)v3BqC_r50it*r0!giBwOz^k3q@E_jPeaO+TMu4jp-euRyfLmiQuw%e77Hb&) zU*i8;uxoik5;dSFU5q)vzX;Oup0&i~vRDmSDC1`~kB-H&e!U80l`fpv*sC0=4*va1 zJpr2=>$uR2ipj+g49WT-(r%s&>0|=uQI8e;aHU$=v5et#gq-yTy$~{aj}xoML67#>eB>8pm25dD+;Qj^s`b@{kt9 zW$PzG@23*!Qyj+I-Nf>^E{ZA#-XxLlbw@S!{FFwXvR zK=HkGEnmo@(sKO1gd#0FI30{6D`VJyf=ImMRYz$zcXHF@daUh#WDE;8<7h+ zC>6WF!D*_i^)jba+3k^FnT}I&5A4&iJ$LwqLiPs#=nJjPjqI>vI_|E0Azxds+C+7x zi`I_@{98*54n79*(lI)>6Kpf^6JBdNQn3x9bW8Bf!2P4zcH+B*e6$LI1A^mU>gYPq1q_#6_}vyMG^~qwG*ENtSQ-XL0A`+x_o4$X>qP{}}RT zVQ8d*dKoLd)_|iR5<=gd>r%UmiFBW_coyy_C%lKya0*IWAZ7DIHY%O##;!<&%lKEyEAJOE}Dw|CXGhWXJm{zyPtMDTwt8n0kc~XS zw>Hw<>)^uUW$czVR7{R;NgHwQiqYq6H|(8@4~^jrqnueD|h^x+)A0n z*Mem}Ms{nyTa;l`-9zqV7=6Y`w5RAqh?Ris`*hAAoCS?eA0vBs&`()xRVPy6k;18a z1c7maAAo!FG0n80N6S0F=D~sK!RM3}!g$d@0z5uO3qIl-J-L}&0w21wems7g46iv*q#JXDL+hw0J$4a+4+Q^#_pDQbPln_LSljqX#Pfx`7Q85%gPX(V z1sFPs{2bz*FvE`*XtPo;!Xq?uMDU%1{D8?=z5@wSR6dYd|ED9pmY*RT2XSM z$Ut3v4S5SOpx@a_X8aXT#>6-|cX&nhT{Fmjx#Yaa*9ksk6xnYS{Hs=e4g(h9yR-4D z$>iO z$6Yre+OPvJz{{2P(Zq$h~;`+bMYVVzS>Wcp9XmJL?QScFQk!3WF>yui8kZPm9vm zAYaQDc@McNjA^PR=7!rmEAejW&3hwc9q+*{Re53mYP z&CSGD3SKeN&tc{oY-5?X$mmsJ)EBbWU<7^Mi{xEGz7P2*JAN!n@;gGF$is6? z@Qh_-|DoWI!L}CN-Qf|rEaZNRsMr^Rzr%^)8^I@o58YX3)u3Yk6!Pnkr{%;UBtH`J zcTl9|t~@d&ij!F&B0EClI+RPiOt`X;H$bwMSJfrCj*!E_tL4cY8nHrt068c-I`NUS zqmWakk=F#l540oROYjV^tVee}`TRRr$iw*HEC1RyV;i}13w!)TH@XYo#a*8z1@W}z1SzqPE`-(8T2+D`@Bt9qY5b_GJ`SAJBv<1|L6GHw1e7f|WO(cKvA95bb zj=QlW-w<+8BjWOJQd>7BeplGrATk4M%g-eF-$HH&$tZi~g^^s0@00_f(*7mlp@RRy zhw}=8Z{TySRq!k8$WMgeCfbH8n(7OoxE&s4;EC&D78PtO^!+a4odti$8*z8R%^Y{h zf|uG(eg+CY@O3|j-I^94Vg3K{r~Gp-mOnoOau<5jv@ z@MTM>o-DyLcv0;UJRKrm#a{h2nTj0}@+Xk|Dt>85j|n7S5VDtxeJ1##?qq*m@B_n$ z|3mPfp+L97)SBdsGfjMq zFyud=2xa_^N&RsQd^0o>Kj>lo|DWSJdMu|pt+6-P3(zUz&l}R2W z+?hF{acQGi&C;EU*a;Bf_VsQ3qQRe4;$ks#mgaD$d$Q^GM1Y1y;2)tUkH(}-@hBz-i zqjkYEiT4!6?(pU)S5Z4&8KJ`dV>bc0piWUbg~PAo(r;gpjO0)h=PW3PVsYT z8gV%`9^MP&*mymDdq~)ZZ|2PPe}dGujblL$ND!X_WyhV6w-eu|KlBDwZ2>zDYm}Vq zDZDkx9^xrlf1JhP|LiM%)oXexp3M7m9Lll$eHaYijwka&;KM@JLzSpXIXZtq9?G^1 z9tGLpUhz~+djB`Luoy&SsVevfO!}|z@uNh^S$L`CZyhW^#Tq(~O3R^a3OQ(MeV^mS zPF6-ZeGLWLQw02xrJUCCLrESbtVTon4s`N$KjPDbTm)HKuEoh#b}R$(ci_{zqxA8Z z2D_-V9PuB)wi7?wGo3?AjzZvFH0k^tw^iEX*JO^uH|tD`s5U7-IY3;xYs--;?MqWc z{>T4p09Wf9*!6e$7EpG|4#`?xxrJ(z>tZ+L_rlci_8yYu+?Dt*DPlioUpbji{C|yO zeZZ+eridqC$;P>kgs5!%RIdxt@s*Wt^h^t=3I6ZwHskL%Aq!>OzZjnsa^QQr{~>tF z;iK8=L3#YhL(U-;S87kF@*Bhi!Tm$3g}Hih{eQ=Sj)zr)!0!w2_u|#{JV5?oRS{0& z>q<3vUdjcte|;gn{1H{9)R$$+@0d~$dqlM;*@Wi{KT2^##o-qpzIjA-Fn6><;Str| zT)hl5Jc`%JR&e80{TtpqigH99D8!c~|Exll)PkJjs-@}z?)T6*!U}u!bx#*4#B0eD z;bb)ia^6#M=5F1=eGG9uPI;BVrVA%Qp{8w_b_d&se(FAsbScw;VEX`RZz$CC8>U0S zrX8P62KW2g1;^6Q)T$IH)U;s@Y6a4d(M5l7pFmorCec^G_CC^7C`4-BUlaD8R~_)P zTka3g=r|jd2ipZS8VrS+e)5d!+9QU5`y}G87{3FyvuHd73N>9HLG`qzF*xZ2cOF)B zJ`x)0p&B>>3h{Nxe@2oS4(K^7JObPwA}w2sXa(wLw~LIa>0+kU zAmvidazM#8Y8qp zYMxjd_8!AALZj2VS~lX@bVH%0o0-m_*>r>Z4ASy-s6SyeMB|}Q)A~%gm#>Zo_gTcP z7$@>1qqW9Mp0{qPCV=}KQeavQY@cH1Cqkj7xl9|-KurYqd89X)mWP~^XgdiCHT{uk zBIKO#Q}+ezY+PNQr^!%=uS>pEmwJF!dY&eO`xB(uOtE$yC+SeAX&%$2)Y~cGzKHY} zrbB6(ra+;lJ?oL*`qbHB)4=^H;%SU0Q|wNILQTJCiZ|MN@|Mp4_a$xIAka3N>bX#; z@kz$$T1U$~a9>7xhiL>gc^(vM8p7$;Nll&)?tG-9nAU-uqq;s16l%QEM)gI|IBo&= zXGjB|#cxeL8M6fnHU6HBIZU>K`wG%WOo75=D->$#<8xsjio0##zKZlarW_APwnL%D z(R?PwU0W~jEO1{#I>ey<<-G$6HC@GY0ky5cPH=yYIJ7x+qycp#8wxdT#*~-HtJ&cG z0&(a6i_fC9#wiB&uRb*X5^3N|C^3EMnQE{L3N=2)#!J9<9r3K);J%JH@b}@bLXO5? z-i1QMX7fGT0dA`%ROX# K4s3^2&Hn}D%Lgd{ diff --git a/client b/client index 53afcb2546c8f3813aa8ff689f69861dc9022b65..09cf9db9d49dbdb9d68cb92e31a10e44803800c7 100755 GIT binary patch delta 27157 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 delta 27125 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 DoWQNc diff --git a/includes/client.h b/includes/client.h index 8e64d16..2d38dcd 100644 --- a/includes/client.h +++ b/includes/client.h @@ -10,8 +10,9 @@ typedef struct s_client { int mask; int count_char; - int server_pid; + int srv_pid; char *text; + int done; } t_client; t_client client; diff --git a/server b/server index 27056d6231da6b4482dfa6ffde1c4935b46d9a1a..3bafd189f35ec7564d41aafd9f81ece80574971c 100755 GIT binary patch delta 18131 zcmeHvcUV-{*7w<`Orawnpp-$1VxdVB=|u(sJ6NKE4SR1`2gQbnf=3+-Dt6Qu&eG?3USd%TOVn3bXTQIjVVre_acZ#mg6r|<4e|GE^4Bf#+Z|q9 z`}K_N!}eWQSBtT%P`x6$Gk=vy?yM6>CywzPXVOu%Sn^S)5ZHd}1^L96C%V?YK)o?{eQYh4+^63CYm1y%%_}5uwSNa>vJ~5Vl_Ml6T zoC;++`Wh?jB~A%XFm=6KV~p{Gqi;GLNoa>gp0Pp+2OHZxGM0Tl$rHAH>0z z&MI@%Y^}ekTp0y@=_Bpr7{`OkV91WgPnMm#YYQJh(H)9;CnwvSAZzY!`n|sXoDu^a zeav+)39Y@O*d*CY+`QTG!ZyYC2mz{d|PT7O- z%ZrpB-A&ZxD|f8mBr8)sfpB*yR%a~Fcu=0~blirzpSx>=c`MKV)imYGOARM)qmx_y z>&X|NJU#iGG83KXb5@x~lF_*$VL76EcNKKTGG&CjL48Hn%3Vvtl+8a$_Ga9ra3dhS z>ea_OpD;&^XRMfCh%QHP0H>WjK|B2JPrt#p&Nzw{A0S0Gx_tG!+Fjp{-BBy_qnWYp zvEG)+@sI24)uuMB)o9ygVU;O8Q}VOQK1j(+L3#upcjnP=L)<;3>`7MHPdUNlT%GaM z6X~w|uWG$*KNFP>C;YqiOMU${u<_UWdI7%e1+GPVAZGADdp9^1?2M)L0(SxzgQtO4 zgB7gyFt`GI4O|C)1ilRRKnARW17g7^z`el5u&7uRw8C8oCq?x;yC7DpdfJC7j~><6 zk5hB){Y}YOQ$r2FQUovj>x+M>SX&k;QXHHXh-vm3G2Kp!j&yt`{*A=(qCXuU@bq{! z^!so;;o0NG{4hWN81$ELypLEh3Y16Uq2n?IzILm5+beD-_zQzR6q9iWvf-@6Uwfs;Xb}>o7&YU)Vb1H z;4laORH{`zzRtx|S@5yeSmCgG%BM5VcJ}pUv(<3lq2{nS=BnOia&WYD;tp2Mw{nq{ zr&xJ`dd0WcW|wuuEescc#?GxVhbSDyY?jdFs?!aDw(sH;OZ%$2%MfUH3@2IIkM-&e zLxAlzv@8k_)y6N-b_a^GrF~0{Lwh|ou%)e4NBH@g4q*b?P0+Hy&Vpc$aKFAK^IYbZxKk=204Iq+Q&^mO!Ei}6h-BYzJegh%J4Ch1bKEIRKZCYLDVU~ z%*K3ES3_Pv8hiQ7ILJ$1fGqb{-I@ilacX=sFOzRA2GH$<+AbQsb+QNLjQtKwEjOXw z_VqYXZn_epARjgZe6B;(>6F+O$PayFE;dt~i4N;;Vg#lABR{gy$`l$( z(AU7*N-AH3zAbeQPNV5`)H`$T)8Vq78LlHAPTzL9zpIJQ)%BT!-7E)#R$!>^G^|d4 z3#9Z|4B1Kl%>c-GBzw>d1MbocrN~cZ5VuFK#kNrfldKaQoRt1r2IL%g zQW?vaNgXE5r4Cy+Ksm)STG(*NQ!RFE$x~T?OQ#|gs;E!V)BXhYjMvh--V1@4PX2c+ zm@r9Da>rXpzb$&L0`x$ANGnJN>8EugT zN*Kv@`Xd7%&!7c53GzS4u$kYZA-7X61^C-Jp$cn#({TB)-=jVWXdV8thajxhdVB

YjHBS))SN(YOX(mQtk7#u8 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 diff --git a/srcs/client.c b/srcs/client.c index 767461a..d80caf8 100644 --- a/srcs/client.c +++ b/srcs/client.c @@ -6,36 +6,6 @@ int usage(void) return (0); } -// void send_char(int server_pid, char c) -// { -// int mask; -// -// mask = 1 << 6; -// while (mask != 0) -// { -// if (msg_received == 1) -// { -// if ((c & mask) != 0) -// kill(server_pid, SIGUSR1); -// if ((c & mask) == 0) -// kill(server_pid, SIGUSR2); -// msg_received = 0; -// mask >>= 1; -// } -// } -// } -// -// void send_message(int sig_num) -// { -// (void)sig_num; -// while (*(client.text)) -// { -// send_char(client.server_pid, *(client.text)); -// (client.text)++; -// } -// send_char(client.server_pid, *(client.text)); -// } - void send_char(char c, int mask, int server_pid) { if ((c & mask) != 0) @@ -47,28 +17,26 @@ void send_char(char c, int mask, int server_pid) void send_message(int sig_num) { (void)sig_num; - if (client.text[client.count_char] != '\0') + client.mask >>= 1; + if (client.mask == 0) { - if (client.mask == 0) - { - client.mask = 1 << 6; - (client.count_char)++; - } - else - client.mask >>= 1; - send_char(client.text[client.count_char], client.mask, client.server_pid); + client.mask = 1 << 6; + if (client.text[client.count_char] == '\0') + client.done = 1; + (client.count_char)++; } - send_char(client.text[client.count_char], client.mask, client.server_pid); - - ft_putnbrbase(client.mask, "01"); ft_printf(" (%i) - [%i] %s\n", client.mask, client.count_char, client.text + client.count_char); + if (client.done == 0) + send_char(client.text[client.count_char], client.mask, client.srv_pid); + ft_putnbrbase(client.text[client.count_char], "01"); ft_printf(" - %i - [%i] %s\n", (client.text[client.count_char] & client.mask) != 0, client.count_char, client.text + client.count_char); } void init_client(int pid, char *msg) { - client.mask = 0; - client.count_char = 1 << 7; - client.server_pid = pid; + client.mask = 1 << 7; + client.count_char = 0; + client.srv_pid = pid; client.text = msg; + client.done = 0; } int main(int ac, char **av) @@ -78,5 +46,6 @@ int main(int ac, char **av) return (usage()); init_client(ft_atoi(av[1]), av[2]); kill((int)getpid(), SIGUSR1); + while (client.done == 0); return (0); } diff --git a/srcs/server.c b/srcs/server.c index c088d80..cfc1d73 100644 --- a/srcs/server.c +++ b/srcs/server.c @@ -1,14 +1,25 @@ #include "server.h" +void send_char(void) +{ + if (message.count_bits == 7) + { + ft_putchar(message.character); + if (message.character == '\0') + exit(EXIT_SUCCESS); + message.count_bits = 0; + message.character = 0; + } +} + void sig_handler_1(int sig_num, siginfo_t *info, void *context) { (void)sig_num; (void)context; message.character ^= 1 << (6 - message.count_bits); message.count_bits++; + send_char(); kill(info->si_pid, SIGUSR1); -// if (kill(info->si_pid, SIGUSR1) == 0) -// ft_putstr("client->server signal 1 received, server->client signal 1 sent"); } void sig_handler_2(int sig_num, siginfo_t *info, void *context) @@ -16,22 +27,8 @@ void sig_handler_2(int sig_num, siginfo_t *info, void *context) (void)sig_num; (void)context; message.count_bits++; + send_char(); kill(info->si_pid, SIGUSR1); -// if (kill(info->si_pid, SIGUSR1) == 0) -// ft_putstr("client->server signal 2 received, server->client signal 1 sent"); -} - -void handler_1(int sig_num) -{ - (void)sig_num; - message.character ^= 1 << (6 - message.count_bits); - message.count_bits++; -} - -void handler_2(int sig_num) -{ - (void)sig_num; - message.count_bits++; } void init_message(void) @@ -41,25 +38,6 @@ void init_message(void) message.text = ft_strdup(""); } -void concat_msg() -{ - if (message.count_bits == 7) - { - - ft_putchar(message.character); - - // if (message.character == 0) - // { - // ft_printf("%s\n", message.text); - // message.text = ft_strdup(""); - // } - // else - // message.text = ft_strjoinfree(message.text, ft_strdup(&(message.character))); - message.count_bits = 0; - message.character = 0; - } -} - int main() { struct sigaction act_1; @@ -71,14 +49,9 @@ int main() act_2.sa_sigaction = sig_handler_2; sigaction(SIGUSR1, &act_1, NULL); sigaction(SIGUSR2, &act_2, NULL); - -// signal(SIGUSR1, handler_1); -// signal(SIGUSR2, handler_2); - ft_putnbrendl((int)getpid()); init_message(); - while (1) - concat_msg(); + while (1); return (0); }