From 7be0716f61f060bf7a324ec4c38b78c635d1af71 Mon Sep 17 00:00:00 2001 From: marcelb Date: Tue, 18 Jul 2023 21:12:26 +0200 Subject: [PATCH] Support for multiclient (async) --- lib/tcp_socket.hpp | 5 +++++ src/tcp_socket.cpp | 19 +++++++++++++++++++ test/client.cpp | 33 ++++++++++++++++++++++++-------- test/client.o | Bin 40488 -> 87368 bytes test/server.cpp | 46 +++++++++++++++++++++++++++------------------ test/server.o | Bin 40440 -> 79296 bytes 6 files changed, 77 insertions(+), 26 deletions(-) diff --git a/lib/tcp_socket.hpp b/lib/tcp_socket.hpp index 20c9993..4927772 100644 --- a/lib/tcp_socket.hpp +++ b/lib/tcp_socket.hpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -38,6 +39,10 @@ class server { client* cli; void accept(const uint timeout = 100); + vector thr; + vector clis; + void asyncli(const uint limit, void (*handlecli)(client*) , const uint timeout = 100); + }; /** diff --git a/src/tcp_socket.cpp b/src/tcp_socket.cpp index e48f63c..3b31296 100644 --- a/src/tcp_socket.cpp +++ b/src/tcp_socket.cpp @@ -36,6 +36,25 @@ void server::accept(const uint timeout) { cli = new client(this, timeout, securefds); } + +void server::asyncli(const uint limit, void (*handlecli)(client*), const uint timeout) { + do { + thr.clear(); + clis.clear(); + for (uint i=0; i~client(); + } + + } while (true); +} + + /** * Destruktor varijable tipa server */ diff --git a/test/client.cpp b/test/client.cpp index 8a123b1..1ca327b 100644 --- a/test/client.cpp +++ b/test/client.cpp @@ -1,4 +1,5 @@ #include +#include #include "../lib/tcp_socket.hpp" @@ -8,19 +9,35 @@ int main() { try { - secure crypto; - cout << "init cert " << endl; + uint n = 10000; - client myserver("127.0.0.1", 5000, 5000, crypto.fds); + vector thr; + for (uint i=0; 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 literal 40488 zcmeHw3wTu3wf~tU6T(9i6qJg}@qt2-n1m1_N=*m@6C@b(u=t?EWHKRBlFT@nK;kVm zG^BMJ(u-|rX{9Z;_Llp#Dz&2cK!PHnUbU#GRIMPQod}kQ+D5D9{?>lYo|8HLFX{b% z|L^~OY{;y=)?RzH_s__+ru&k+^QX~>$8$<-4$S5>U!|w%# zX`};BV>F&#!~s%yIFOPEGXy;qkn&BSND_E1CmRw<4GB^{yD)G*Pm$2b;yC4VQq-g$ z1e5(LxcV}VOQ`2#<&_J53oIPN=@RPs$TwLlczV{qSs+u!Fx;MeDxxq70%tRJQPTtsB(p0ix}}Re~kSJ;-*2ga{OI~zvunWH9nhvO@IFP=d2ySaZCwF zw&4S$oRK882@NC}{azdXavT14Z20Hc@MpuJ$;y2TPDn-{Z6jxsO}TA0^vQ63GWqw~ z(66-7v%p55mq#R*Z=xcTm3t{FJ{f(MjXryA>^j><{;zEKZ$hI=R_-A58H+sDu)xNy z`)%kS+t3Xg`Wq-PnLbb0*maSO|CiacpNDMZpKBwh&8FUeZ$odlk+a)IpG+IO4%@Vc zS{uI|vZ23hQ|@~uvbw+R%S#(+=G>`Y*95*KcFjdp2@jwUM*V zhJL>d{Y)GEzh&dkhiuwUzm1%78@oQRX(uSwF!5&%y*BOSE*tsJ*!Zo*rXK%fW7kF~ zlB{2!2fArhl6Y<8)3PlYe+%WopEcyz$e9nuWc;Z%_C9Un=Xc@H3$29$zrdy*Yar)B z%=)!rVdkQWLU;%KW3l=zYGks>v2bv@Pa8+4JL$JwT<*jM(8y?T{ z#$c1DIpPgRJRZ)Pl(A}2rKi~+Ug-~e8vT*_V69PExyVyewZzlX?DzQm;Ygq^;PXcO zp1J_!QsSy`Ai`tK^(~Rw;HoB-r^&yH#l1eCKNMlnW`D#}$EAk--df|@a@S@-rU zJk8Aw25I1H2>6>Kx(2>rQJGvLP5T8TPPAV zJU1?`jLh8Z-~xLhcswxN6_bU?iX8=74;EJj|Rmn$4ZWX^EX6<5M#R7UdsO|=cl zEOFTzQNZf=~@XkRSc4E+})@F zQzYnBv5?Fcpl*39&F$EcppHRvd!skdWHbkTEBq0j1JfJ`k+3h+CNiRRv<4!EuK^yV z6x5GVgCY%#`SlpOYucK;D7hXPn~erqOEe)T#QRoY##`a3^9CA>5a!58oq_tL!h)FG znWo;_+A#9eU?Qg-kr@={bFD&~BelM1(+Dk~)a5>?PFODE<@5z5C7v1CIcjl$IIxl> zON!@~dUCU8fLTMXFcvH-oeKi;A3iSCM~d*f&dM z|D4!SNoTPUpgF-o|I!g7EQ6&{dOFL?^NmD2jiu0Ux-p8S5zlCrmw2fpl1)`X%Aq{O8Y`4{>m?D8*L!}GoVqR^dD*I=Clx2jw6iyD&1-P zTBI)n|1Hnohy0_B!-Cev@R7!Gf!{LlW2|`7jZX#s;(aTyf_ECDM{*q^Q@@XtG~+Db z6iE9g1aA@Wae=^T2E1^g;D6wbA3>iC<1&G_oD)DS)tII7JB;s&{3MU-pQ7}a`=(%F zp?@le6U4r#q}OC~x@n=$V)bnpQ!MnVMVvp!LfVh-0!n(J z$S)x+-zVUY>XAYZT__{KIc)EaA^6#=(e>+*eHvY;!m=FD=o6(7z(X3nNTbIz`T~vK zuhC02`hZ4XtkEa5bA;^ribj{$D`+%Eg+^b$nj^S8LYs+)jT#*dPle4I9hXQdY|-el zk5J-PjZS6DuwA2*uVv`b=%kYjdo{YOOG?|P(M8i`Sq^CQQBnxtA&rg>r$S7lk5N>^ z=-24zKq?Gq^wSj;k#BN@bkEf285&)-HA>FX==wh11dV>CCdbt1v~MlL6pcP!5&?5G z`dJ#iP@|u%(TgZCq&6hH2QfO|1yn!zDBRt=#w;hNTZt?y;Y-M zpwZhkx_-TXyGFlA<6p1QFV^TAHTqc=W29Aj7!x1^E7&f zMxUY4vow0XMxUV3#Zh6tkFXneXd4t)#xP}ytDJS~g92^{6&v2U1PxL*naGJI8C@G`o=1pCfXBy4u#VMd!q0C&!xRIvBG|Z(}W896;2B`*spM!SYf}y zX+nkl3a5z__A8twP}r|{R*cE6!t5eCQjI| z@bek&Q1~Qik3a5z?_A8twMA)xznh0UP!f678{R*dv5B4jZCOp`$aGK~~ zzrtyPgZ&Dpi4FEEoF+8buW*{kV86m?0)zbur-=*pE1V`Q)W5=MqC)+DD($BU3iYpW znwVg}!f8T+{R*dv2=*(SCLq|aaGH2vzrtz4f&B`ni3av7oF*99uW*`JV86m?LV^7X zr-=miE1V_}*spM!IAFiRzrt{b!mnod`~Q^o7cu-zh0{a=`xQ!uKeON)EO@sC@3i2nEqIFsZ?xck3%=BX zS6lEh3+}Sub1e8w3qIX~PqyIaS@7`|{4@*hwBVmzZ>fI^{+cId6g@-C-;x;?m16mlo}lWD{y{Tmz_CjEl@0& zy65~E6nD4t1p-$LM8;z&^=*n{DK&ENQ0Am|;(Jm+@c$>{pZQAyQ$Ke{``x?#cC~xg zK&soZ$Nl{0k#P`EEd*o?9;##Gpv+I>Vf&m7aIeuat=io&=aXtg-O;xrW87VH3Xm=K z@F#pvVaHuOE{DC4C8%+3j4c z)LYK<>5c8gi~{uzRVnp8BT77H6Q=mMUPWB5Gvj(KWO}KBj%Br9Y$|@IA z9bYJz+1_HLlFHQCu$c z-G(1(f-t)@x?dIC8ygLQM@Jkoa_ahoB zr`&6H_rRk!72mw{Nyb9xR)9Q5Pm|cIFhvuKoCEG?OFxnaG9SzW=+Au6D10LGhdl{JF#j#JNCGaQ(HYiGTaWTn&YB_{yP-z=y$B`X?d9?c2y6k1|4z6M!?cPKFO|y zrT>^(P>Jeo%STLOm0k%4yTPy*diS`a)!TKoXyol$x);SDxi_{B*1Ds+fNm#0Q(rw8 zTR_dDV|9-~lZ^`^dSmy|2-{WN<96&j>fBCVhAR(&g1<6IBx$Ul2g%;^W%CfF%%zc! zx65l-BXd!Q<+B0oyOhf7S~?J~Oll&^^WEIc5K2Ws11Pj#H0c!}#WRuJg;Wi&dmrrH zJH&1m$i1<#$c6eJ3t{`*SGx8_Mlge57gZKgGSS|;a8XLk*TA_bksOB1tXF)MSwq(2 zuVWx{za*pJQjkTyA})$?3esPg<-~#ZEUQ8mhT-{7v40NDwBWw`N zK6Hu8+=_LxaN8wdEq+Y!f(WY_ZzQ952T_lv7w@1#Tx*YD-O}x1EMrd$4z7KT;qA=d zz~@CVEL5Z4irFJF=V$@>sx-;9@Dcw0TRYylC%n5jMbo4u&>pMp{{tT z=BtilIn*X~PtedHYG@IZp#Im5ri8{4eQqahZpAtwv9l+01Nah$f=^+2yv4)QUnKlE zR7?~;iiA(G6aI??;i4W_-;VCouB*?65I!k%vl4n^8;}zN!e+Fb&D3(xiN>K5J&2tk zIEeMD*zfzn(*>Tcq6y&L((Bqpb#yep%eBe9(cL}nDMG=q1%r&c%jhbMeT|8yk#ei3 z`K#cs4%a4!O&%^Q(MG!I%bFi*Rl!mHtR~DZVoypx1ST^>J1dYVt_&b}T3%>G?-+#b7YKP}UT% zvd)55C$w=XZQden-l2BX?LwTi*@FE`q0Jv@Hew0Av0Jz{=O}Gj=PABU5&$*a-R?AQ z`6IMRixvgx6aF?hxGOd(UV1MG+!w6$`h?PJ;-#~>P?Y`w^Q?1|o1~JKpI}!@XgLA` zx=_c=57C!VUxJvv_OewuVdvESguPFBTs#EV@I0empr z4R%&zWz4S!V=fdW2ESVqxR}A03a&|UuBxG24#D;DdrDUJP_EaQQ3qo$#kE^>9_}947EdI1@v^dqP+B5fUJScjba0OvS<`ExATPF*n?0EgNO%rzBu2GV#W6~*~?o_Z;a~C(pAn$Ebmcb zSLKz(%lkPk6<9)VY(6jVIP0#YS6RHg8zEpw?YLM5T4yL<@w$Oa66Z#E>v3|+PWp+> zfpQ#8F-#+ttx&qf61(;&hU2f}haB}SRs>epd~Cu5g2^DWvmK1Qd*m`k8ljkDUm$*E z=-RWD!?w{xE|`{*bGn>-Tp~kjixl525D@PkOeX0^4doIPCA!B=;2PqN0^;k~Z6>xJ zZA`aW!D^nl2t{a~8K+R@nVIjxGa<4No~dU>SUl4rM#_oc)SBC4#H+m0be6J~)&|lm z3&@jQ&VDvjkXII8t@v(Yh4F=Uu#aTZ#RXcw@rVOeA?Dx>kbv6xIV}`~BHw4ss(NN5 zDB_GOa+apZY|;CfDKuLbh0dJ8N$(y9*mT|vEPzPU6SM`(ngT13y&l35ZeY4ME#rb)2P|z z+i60rSQQjz&A2lJ7Lsy;1a}LR8fo+lRc$X|22p8Pzr$^4MkX7?i1nMegC&O9E~eiG zvKB31vsi}yn$!{36$Tn4yRbo9#==UnwhPuC`F9$`bahfAiuSkz zJujBkWVv_6%w4f`;87-`YXeK(mzW&b8%s5e=)S3Y13fH8?5$KyvURw-H;}T$+xb%M z`A5c~rN~9&2hho4W0tZpNMhi&dr9%`PL7h|Z)49q@DiBhEX#%53rbU9yVeV$ln z&sMApNKD5L+W0dv*UrH>2p#1%;3M&>aYyH(0r9>-7fHC75$QCpZxPGYDFkflBjQtmFm0$w~hHgdc07veoD58MqhN;I>d43_RWBY)o80) z;T_C}2V+s_wkY~m-|J`%f=lmj@4m^BkB*=;W`k=pwS^Zz@7og3quPFNY?hFGIhTAi z6fay>*Eqp4MzE9(WqF_Z>|m@9WS44j!UfVpp~gK)={8Nc@`JG|mrQnXEas9(1v<#knMuf(1sgZOR{ znbL2V_UMp%e7HBgjuvc`LJ~rij%{ZSUBClYLOOBU1ZTG zq%4b*rulgGNND;OHX(ARPSzNl*=&p=zI8Jd-%m(D#}2Aej8@b5Xhj%FAHy>8tvfzi z@gbLwRzjoRgT$;fs!z~p7Z#{OqiZycK44Yn+{A_^(&&?X#W#ZapVfF54N|g5K1fBW zv^bHpEI1Rp`4nPc-gqT;2NP}0zV%^xS_sW^C)>MwEFrra*|&=9 z70BMVT_2yQRrkhz%B(yX`~DkzSXr)y72XtX73pD-zQB@xqe!n1>6cp4XN&Yak*>z1 z#NPdb*WW-Uz34SwzFRo^OyEPV2kvD8 z_3eMx#kqe7k}#NFuXg)IM_RToed@32ZGDColDiCPZHq7kbZ-S{vO_SM2Ca z$(up6c-GQ*R*ZZsC&ZJ!luc%OkyO3H6~pFo;>Ig!j0w*EZWry*L(j79?&w~3N6Z1K z2TG$)7qc~cX>@Nf-DfcPB9W3Edv{WgWmh2XfBeI}q9=>G*qV2Yep2bMd+G`I75gJ+ z;EIS|w{dr@yLccI8IJa$5v(~ph`4*|{&>9eg-F(9M(v1YxE;7-r0CP` z?uCPUkh8no;qERTJUV(0_GUYta4?N=ozo9Tz;ZUuMkWE-9;JIroYaNePkeLx=09Tv zfJLOM2fpm8-VVDd2@VZYgX?y^LUs2ti&wwGQsejT9_5oEWAQQnzYa;-ZKj0HamIEP zV`EE*TOc%cGvOq0$n8A4&GG4M=IM>4FrAz)&VUnOTDNnYn3B4j_c2;;Ec4ZbtJ24< zcYIL^G&rF_WZ)`SJYfvtsc^~zr#$fg!~^u^DFym4he;p)Fpb>2S@a?<-oE8T_LUCP zaQpFkv$-l5Zm6XX|E%Ee#E3Q!rw##GA~uRG1cq z@v=HLwXx!GRa9JCvD7RrH;eH$vcI|6T#O>-2V0tI&AM=~(X0*9ThbSZvQAb%DZjdj zzN}(Kf@Uz}Z!)V&%1!>>waEn!<-^O;W`(P|(p5ZfUWFM9bEN#*iYhbMq%sf9M=xiq z4Ofd{Izg#V~sy-2J1|!7JS!4)J(I`GVZS`s%tQ5JX)=#WFQM-bP(k>ri;23%+vaFG@%)Q|-dd(d{97_6eM^RT zD9CaoAKo;l54)Hv{B43S?s@T57^(#R(Hb+JKhDK`5@__}s{y7GpP**2=Ii*l3^F6g z^2_~Ue4V3FT2k+As%@_Kt{9?cyd3_O8`<=QZuoo(mwPhp%rPi{nUTmiTaa5dJu+W}t%JODTg7XSl* zeq2MDX@>DAU=iScK>85mC)l4@2l#dD|2zQrBP@$w2i$^furw#$>&E5!Wq@-5%L!tw z)(W@}yQ!N2FT>rky?}239s~T=z~JDxbi+6Rm=8!>gA^RMRv3=fEXTw#BQn;*ZldEM z2E)C7aPSghm^XqJhs>wA@-vG5Yj7|GJ&e<{=AS-cVdm&n8STc^=gj`{jEgTMKFWVH z{%-#h>;ja5=n?#_2Yngk7lF!Jhrbf6jfaNJtHh-o_F z&TU^djEPd;i;+fuYoPC$kegPCA1Pzuy3~%eR3i~b@B9zk$%-HgM-)W=_$Mb^2a=+hmrmzJ-wXgp8^^^u=EP-ID_n{)a)qjPFnUxo#z*yi9@m}tXk57;;{!dW+korFG<3S*5AQxSbK z&3V{q98LQftU+00CW2PzTwr(sfismZ%Ryy2oXs1rHaFa>0Lq=?J!o6^1!1tH$}=ySHsXKcm(76ohvu&@;`*igWhI}7yW zE(LnHi9!jUw4or_*f&iHA5TA85ZR2@)trdkE*91c!L+|lfj;d;0k3zkP>&Z{C`kHd zwpkq4d#`Y;P(zh}KF_A?`zPPVqF2*e@X4NQVkp zw8@NM3Ya5ck$~j_E)y^$V7q`k_rLy|(avSa?-fgl_(u0^b4qnhOH-u9%%zWV=Sn!E&0-fZKp{Gd^*xobH`zP z$*_*IbPv*DoTKI?$v+YFGvJ56=5h+%1ElaOqw~1_o0gLNyr8pf=-D>(A{+WmHuMG? zdMD@?LjPxl{&N2BWBgghJ9r?P0^PHtK=&2T;L(KN)6oyJjERQXo8M$VV8U>wU?6Mh$hp3JUh8~P83o-$Ugv!$?~fKKg@ zJ?#(TWRb8-(En5PJF#3fj@ro2z=ATFK3}t;hi&L|osdkL8tm{5dGyzF2>kxQ|@sa`fSl(=-Vn3?&rX`4Ro4+jdnp0U>&2MYb;rl zNWX*0Nu&|>s*r!ZXy@!XCD12e04G0uoX7J>`t^*?Y5H#nbh3A+7~fzH3q3ac^wwxH z{~u*^%)gd#APa+bGXAMH^j6Tbuzt3-tF<=#TR4`Mr zJilO*zZsmhLC^ArU=1BxhEoHZJ>Hg9!xwA}HTWa`S{#*?lmiE2HU&K1aM;`C!SR~m zHlr?#lfFE)Esc$IIGBd<<2ZFz{y=}WFNE{Qa75aoLXRg9q}Kp|=I65W!6G;+jVJ*+ zmkiH<s!k`Pqkr=L7yUb=H0NkxU959nRM;^`IRo5dRaVok;}u5JGD8Uv`C&t%1<`qr>PaOW6W?s z8J$H&XQI+0_!drfD%%i7c_ONXnO+=7;H7gl<*A1}fghU2Prbw8kvM2C;%)Nz**TT) zckayi$&~yQRGeR!JF_-WSBHaU!N?Ambm25R`X9+F2&2Y>jUIXw9w$%6GxK9Dg|Fwy zLl@a$o{5V1=`d4+*I0t?{OS4xlBe`q)Dzw&pu=fv4R#Q1BEzuG1RTbRo$Mq(?O4sC z`0;e`?Z0x=rS2U%+YZtScwfXxg2U+%Lt8nW_llu`ohJCNyHB2rX;qw`G-#EN7U63N z`_cP`V+&5w~Z^8+v}K-U5akX>3)+ zQ`;Q$&>JS=NM$+`(!xXI0bXRm*~yj!Y7pFss#~4(5tVexr*2hZLt|%v&iiV1*k70Z zzjrF^kn=%@D)2uz(N=f!7aiTH3m0{kc<^R|Aetztr{NsXSM=vCh*~K+(5I3-fZ)PFhAm4-%>jAx2C*`rVz_Xom?x7_&A6X#hv_tugr=1`K7v@ zREy#*BvlYiEyF5Fot<0mvz8&c06SLHQqcePBcrXlB=mdCyj5@Oz-Scp0vY0Qe>yqIeIIO!01>x}F1d2Mp)nXMpkz4B>*;lZ&3C>m@ z;@jN3KxjVRu$;$UupCBnrW3&V$=~vf>jV{t)o^hDchci`b;;CI_9z%M*v?`RBUE}BpQ}xL!9ePzfP#0jQ$>lP=jQ1U}9&Go}tL1Ip(3l3_Z zVO;UyIB_-vopj5Rd4McvEU4X2>n&2DT#Ee@^M+Ws&{JUN&StsM_eDVOz5 zy`V4}7RVupjY!N=b%K3@t)Atrt)7rS+#ICqvPhd} zWllo6@}!(yPJZw%$+PrgzK&xD-zSt+T2+QkoUng6odqAp086`2RrK`(%W3sR^4xan zRkzL!?gd#YMgn7zJ^iJ$)CLkW9h5Zd)${=E)hKP~P7CG67W-ku{ zr3kLsjcocjhLO!KH?zY*w)K_muNOP9^|g>DF%;wTiG=|+iK+83seC_|%aC!BLux=I zQ`y@XKv`Tm20bGiTg8po0Z!OoA1*@Am(rHLc&vfFcTTeC{c{TP`BIK?UKuBN5&m#X zT;(qm`6Lv#XNZ*rc|T9$1&HYR>qUMEFP4k~rde>h&8Fv<&znhTTKKK`agdsUPgBra z+bqcEW+luQbUdEGf>nPnsJPXu?3d5gO1PJlLm)tYmifiwutoqhGFg>R!Vu*1y7IYP zP95t1TaZA{yvqFYIadk)Lu8ctOFjv|iFA5~R^swGS_zrb;356-=!w!FQ5L%KOFmWk z#e)*^`Cj>4uPonc|Bprfxl9_qXCNFSp?t2G^3$_V*8F#YMt+s@4HF0jll{^i*MwlL z|4m5M^P47Tmyms9M3aEqoh(TB8(@0=^%wJW2~CcwUztzBtw_=HZx#6^TxL;N=9BPY zOMdyBhJ;J0gK9zMlcb%9=;h1j&?Us}_=I3l$9PKQm-R27|B~=l(VwLdQ$_@Q7Ldx9 z`Q`I|5?)4$TCkS?8q)OqTdFv-g!FA1J;?SWX>TK<=ie`$Pn57$Dkd^m%l`-Hbnjf6 zDWBWVTER1z9H?JezJ#eL9JlmUe)(K~j>s?hqyULan2G$Pzbs!q&s8Y$TkBiqlk(0* zX6idKzkIIJE%N6G`^7M(`k$2hTjbTtm+u9%Hu4f~xA;$%FX3d1{zf~`XM{L31uB8e zCvkf2k!Vu?qIRBQiu@BuIV}`vaf;@M@^dV7nSZ*4F2(84Vj{~?F3YFNMWE-e&cmP7 qUylDHL6f>8szUv3JX(VL&U%pLN*W$(NSgn*Kja)&STa~pipv4 << endl; - - string fromclient = myserver.cli->pull(); - // string fromclient = myclient.pull(); - cout << "tell client " << fromclient << endl; - // usleep(600*1000); - sleep(5); - myserver.cli->push(fromclient); + // cout << "init client " << endl; + + // // client myclient(&myserver, 100, crypto.fds); + // // comming myclient(&myserver, 100); + // myserver.accept(); + // // cout << "wait client " << myclient.ipv4 << endl; + // cout << "wait client " << myserver.cli->ipv4 << endl; + + // string fromclient = myserver.cli->pull(); + // // string fromclient = myclient.pull(); + // cout << "tell client " << fromclient << endl; + // // usleep(600*1000); + // sleep(5); + // myserver.cli->push(fromclient); // myclient.push(fromclient); // myclient.~comming(); @@ -38,6 +38,16 @@ int main() { // } // sleep(80); + + + server myserver(5000, 100); + myserver.asyncli(8, [](client *cli) { + cout << "Klijent " << cli->ipv4 << endl; + string fromclient = cli->pull(); + cout << "S klijenta " << fromclient << endl; + cli->push(fromclient); + }, 200); + } catch(const string err) { cout << err << endl; diff --git a/test/server.o b/test/server.o index ae26bb94e57c1bddbfc5318d9d2fb581abd4e079..f3dc29147a251bc53b7766fcc958f9c33f119708 100755 GIT binary patch literal 79296 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 literal 40440 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