From 57059c3ef083d30b6c1dd6eb2f3cb55fd8e7ab05 Mon Sep 17 00:00:00 2001 From: GustavoHMDS Date: Mon, 28 Sep 2026 12:42:49 -0300 Subject: [PATCH 1/7] WIP bugfix --- pitiupi.testSocket/out/GUI/SocketTestMenu.class | Bin 1303 -> 0 bytes .../out/GUI/SocketTestWindow.class | Bin 6204 -> 0 bytes pitiupi.testSocket/out/net/TestMessage.class | Bin 739 -> 0 bytes pitiupi.testSocket/out/plugin/SocketTest.class | Bin 1584 -> 0 bytes pitiupi/src/pitiupi/GUI/MainWindow.java | 2 +- pitiupi/src/pitiupi/net/tcp/SocketTCP.java | 8 ++++---- .../pitiupi/plugin/PrivateConnectionPlugin.java | 2 +- 7 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 pitiupi.testSocket/out/GUI/SocketTestMenu.class delete mode 100644 pitiupi.testSocket/out/GUI/SocketTestWindow.class delete mode 100644 pitiupi.testSocket/out/net/TestMessage.class delete mode 100644 pitiupi.testSocket/out/plugin/SocketTest.class diff --git a/pitiupi.testSocket/out/GUI/SocketTestMenu.class b/pitiupi.testSocket/out/GUI/SocketTestMenu.class deleted file mode 100644 index 19be548d5802553689421867c01254a161db1044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1303 zcma)6ZBx@g5Pq%{(uP1wc@vdaLE2IXzTjIBg^G$(9A}DU^xKsj5@{1ANh$m+XSB@V zj6cBfH#zP#Ray#+A9A_fyM1=|+1>m3`}7BZb-Yj!LWhE|hE8-b^nK=s{7Cnzmi182B7&#_RYNy4hQzD)8+zW^*%$tn@ch6a?)_72Tej&`8HRGL z7X!T!K`%o%yT^T%aN`>KkYG?eiFV{O3?_3jAicyXoV@Q+R7R?xV1SO=BHi#sSw%lO zA{b_f=l7iIgoK_5oXMkjg0jA@;RbFp#Q2VHIrcl@?mBK+m<&tFb79JSj8qTmI;DkF)(T=g-oy! zO}k#jZOkf2YDgi?FmMsy3@TAuuso|+5=4CRW2(R~az5)uapYMz>zH&ima}Z}wo)z% zcZ=6;dp)98mi%vp$1llpT~bCxBj0(a;_ir-mh|1<+B6HYnpCtk$MHSi-*Zea z4n5Y1CCSeN4GSc7;gO2Rc%s12u#Bg~?^%mj_Mx*c^c*i2O->Memul>|#|+)&X6aXR zUp0&ZkFU9HmV`H*bDaIkfzjT6O_~XjHeEt6q1D99ZHhQo=2My#bFO~9^FAN54 z!=^^embm8$Pr-ABnKn)?N>9NW!`RhVY5oH)FiAxS(frWV%i*V8i1wYBqcuZPQ9dQ~ zUr3*TrRTmuNhf-0hbbi;+K0Q&+11 diff --git a/pitiupi.testSocket/out/GUI/SocketTestWindow.class b/pitiupi.testSocket/out/GUI/SocketTestWindow.class deleted file mode 100644 index 475d4ada2ddab036f26c768a045bc9cd0e20bc33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6204 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 diff --git a/pitiupi.testSocket/out/net/TestMessage.class b/pitiupi.testSocket/out/net/TestMessage.class deleted file mode 100644 index d472376b0b85045fcde679a136d3e08dd94f9d91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 739 zcmbV}%TB^j5QhI#3KcAZf)`M{?4VwF0F4_XiBZ@<*cUw^$3SVI_*|MuOkDT?K9unv zj5lOun#^?0eDlwoIj?WeF96Q5n}UUy1KUL$358r}A~Oz6HPBJDu16!ks}&L_CNR;d zLabbAC$WH}gOrO!xC$8|TY40I(RMKCvuNe&*1z+sJwNDHo6*n&-D4?Ta*>fb%Y+gx zyI7IXjZ8SG>p&XzC6RZrDha3mImKo9uj2nsDs2V(Y;eOVGgl_ijd8!Dhb_O;&MgzDV}_-A=Mm=hu6AhL^S(jLr1a~?D38k-@vBjBKc>@ zVy2!OnR+gOJ^}W`8tpox8o4-q(R+gO_9t+>g9*~!;RIQ)U{8>HU{+y67}kR7Hg%Fn zV~JmmT?)ufHAPu8OZ199E}Gxvk_Mkgv7ku%8-0Xx&-6#94|J8$=3F#Aix!A(%|)}b Ts7zOyi{@t0J)+wj%EHb&;lq6q diff --git a/pitiupi.testSocket/out/plugin/SocketTest.class b/pitiupi.testSocket/out/plugin/SocketTest.class deleted file mode 100644 index a984f738a8cd1ce2dab48681581a24eab40503f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1584 zcmZuxYg5}s6g`V=)>g#JCJ8R2aUmtL9U@ZlXo02y3WU@)G$u|Q(htJkp-PP8>OsO! z=`ZL^KQ)~e&%`sG_G|xBA9rOL4CC>5ceVHIJ?B1l|Ni&G9{|?zoq_>GIHD?I7-SfI zZ5$bT!>|tY?fuuH<}nN|o0jQ4WQb_lN*r;9OS{7LGG)8=MtE^3bZXOgJ>$sEJQkK? z{@{x^R0cNBG0ZT&`D{z?faSU8rd7A!Dj343uHY)eShL|Dm{yNFB6kBJXTBM(6#8*4aikfN=S@Xn`3fd5DaA}Nq_zHMvlRs& z<2px1#V431j{ce%xKXc5uLRKwGM(>q_pM0@eIj=$CXO2nBbM-Vsktaz*EkRgW@H_1 zGE4;}Fl~MH*b^&`V;pZ;P2VefjxY`t%pxnL<``ny-m3I=i&S^dbc%NFKpwZ{0i9u@ zqemy-JqS{yAdfpLKEncoLNxVm?Z>rj5JGQ9EXms4Q*j>;7=|5D6XuZ!qo8VQg$t1d z5r4su>T2BDUVm2;P0zF~jwOanURRY68I7iIlfZy2rK7$w0!J( z;*eU?_Nh}ZceGM?JC13E86&xC_?lx~#RfLJG6J?!0*1I}Q-Y~VGJ@WiJG*PEURlX@{8x|=EGab-`E@Y{;$<*zeu$6a$j%J9i*>ypEQ7|o0@(=fgvuo@( zXonvNuVft3DnY9i-}~Nns7$o32*;%)GN?5wnkTxhr0ujIS1Ft>rL0V7pu7*2J)`!f zXfy*Nj+YDrd#mKSZ2L}4Y?zXL*zjJe(J4M`n5&aT@1>-6ZbdCf)3LlCXfgxJSQ7 mcz_p#xQ@s_phtR^BmW * - * @param msg mensagem serializada em bytes que será enviada. + * @param msg mensagem que será enviada. * @param destinationAddress endereço IP do peer que receberá a mensagem. */ - public void send(byte[] msg, InetAddress destinationAddress) { + public void send(Message msg, InetAddress destinationAddress) { try { TcpConnection connection = getPublicConnection(destinationAddress, main.getIdentifier(), main.getIdentifier()); if (connection == null) { System.out.println("Could not establish TCP connection."); return; } - connection.send(msg); + connection.send(msg.toByteArray()); } catch (Exception ex) { System.out.println("Could not send TCP message."); System.out.println(ex.toString()); @@ -391,7 +391,7 @@ public class SocketTCP extends Thread { SysInfoMessage sysMessage = SysInfoMessage.parseSystemInfo(message); if (sysMessage == null) { - privatePlugin.receiveBytes(message); + privatePlugin.receiveBytes(connection, message); continue; } diff --git a/pitiupi/src/pitiupi/plugin/PrivateConnectionPlugin.java b/pitiupi/src/pitiupi/plugin/PrivateConnectionPlugin.java index 0ddd738..7da4368 100644 --- a/pitiupi/src/pitiupi/plugin/PrivateConnectionPlugin.java +++ b/pitiupi/src/pitiupi/plugin/PrivateConnectionPlugin.java @@ -4,6 +4,6 @@ import pitiupi.net.tcp.TcpConnection; public interface PrivateConnectionPlugin extends Plugin { public void receivePrivateConnection(TcpConnection connection); - public void receiveBytes(byte[] bytes); + public void receiveBytes(TcpConnection connection, byte[] bytes); public void onSocketClosed(TcpConnection connection); } From ba2f41daf7385fa6483b27486912e10abfee3756 Mon Sep 17 00:00:00 2001 From: GustavoHMDS Date: Mon, 28 Sep 2026 18:59:20 -0300 Subject: [PATCH 2/7] WIP bug fix --- pitiupi.testSocket/dist/testSocket.jar | Bin 0 -> 6537 bytes .../out/GUI/SocketTestMenu.class | Bin 0 -> 1306 bytes .../out/GUI/SocketTestWindow.class | Bin 0 -> 6218 bytes pitiupi.testSocket/out/net/TestMessage.class | Bin 0 -> 739 bytes .../out/plugin/SocketTest.class | Bin 0 -> 1934 bytes pitiupi.testSocket/pitiupi.testSocket.iml | 20 +++++++ .../src/GUI/SocketTestMenu.java | 2 +- .../src/GUI/SocketTestWindow.java | 6 +- pitiupi.testSocket/src/plugin/SocketTest.java | 29 ++++++++-- .../src/pitiupi/control/HeartbeatManager.java | 2 +- pitiupi/src/pitiupi/net/tcp/SocketTCP.java | 52 +++++------------- .../src/pitiupi/net/tcp/SysInfoMessage.java | 7 --- pitiupi/src/pitiupi/net/udp/SocketUDP.java | 30 ++-------- pitiupi/src/pitiupi/plugin/Plugin.java | 2 +- 14 files changed, 72 insertions(+), 78 deletions(-) create mode 100644 pitiupi.testSocket/dist/testSocket.jar create mode 100644 pitiupi.testSocket/out/GUI/SocketTestMenu.class create mode 100644 pitiupi.testSocket/out/GUI/SocketTestWindow.class create mode 100644 pitiupi.testSocket/out/net/TestMessage.class create mode 100644 pitiupi.testSocket/out/plugin/SocketTest.class create mode 100644 pitiupi.testSocket/pitiupi.testSocket.iml diff --git a/pitiupi.testSocket/dist/testSocket.jar b/pitiupi.testSocket/dist/testSocket.jar new file mode 100644 index 0000000000000000000000000000000000000000..3b6438b3ccb62d29b66c776245e082711a2c73e1 GIT binary patch literal 6537 zcmaJ_1z42Z)<(K>kZweBq&p-8=@EwRlo5~yX;A4HrCS;a=?19*>F$OZ8bwM#Q261V z^B=h9o_p6k-}8O*%vyV`*?WKcUGEE0MnT0!Lc&BsT8R@kLb_vENT^7vPr%Y#ifZzY zF8h#>K-aDSBuq@q|8NCdhyCTMDy^m{|3niERFywc9q3n4<^qo5DRZ$84GdRla8K~9 ztUCjhR5=w@N8O65HMn^v`9}D_Bm0k(RE89_9ETpU_dHVKyvIJZwhmuMzD|mP34Ie6 zCVQPi=K8uR;*WZ#4gS4e)azdrv=krRmO1gae?ZKdd!p_Xa zB^|u0Mj{QkM8{T63`$6d_-Kd*Q8qhxUB`$`N?Ikr+(rCb$O=Ob;?cVo*I|)tqsV=5 zFLKyYylEa&R~i9LPj|T(@)$}>c92qQLDq%wk=onn5RQ%nss*eW6-q?ps()&LlVvV#O%Wi6gIzp5%FOaCUpAQbcv7EphxTwyhvulbyue@HC& z+>p$RBCg|$px_8lfH3Tb{(LuiTd>i{A`%bE3B^ zEJJk)URN~35!yt7z95GQ*St&J@Z^J8?mR-;jxqV28%&jyEl+|9lOdnbFpX6$Httd# zV0{XC$^;v^DoEh_I58KquD2d;8k)P5r;H10)map$TfW~b#^U(}xBq^b?PR5+kSF2% z?lbRUMyL^JJ*AbPd?H)ZrLN1RAF7_=aM(qTf`+JH((&Z&%l#L#YpCrWTah%Up;=8{+UI`mr76;8UlJDt zIXY5#sh^kCez2u!jX)NHo^)MNz~U0S^9??E8W#e%*qm|a8dY85${dGDGF}(pj$eT@ zUTX!9_8VWi2J!%j`uN>MMQt zjRzfjw$l_vr!tuY7X>fUvJy|l&KH+((y-}=QdD(fTe;<{j$Kvea&0Aou zMZlPWjD$pqcK22M`yQwKk3Fsfd1>k3@#ikr#qt46(p(ys>ItG?_2VJm3$qgp#0;gE zE`9LWl!P%g04H0m5~ak>eQFU4RUP${c6HvX<7yAv@9goa%(V9Q#Wg1_-!EDWzCr9; zuLkUf@a%uD*BzB!9elp}vD9DnDBTzNan8P z=~SS(B<|T_=^x498-elYQdX)X&lpl3hDMi9#@A|C_YIwMKg(JmHGB{g-TFC6$hJNP` z|JS$ib7m~Fw7m12L68hEqTEO-pf^@bM}c(1NoQ@*W{)&+`)FR6oe2{TpEZ0NWW3o^7<>@;{CCJeu* zIOl5{)2#HGz}=K3RuhC8GfK0r(2}TQ!#?YBkpTXZ(-O(d;=!*K)8j0DC9)N7f5_8B z&2%OWMIv#40W@qqOZ2}CT=~s7m=a!5BCzJS-mP$A?InCFk(E<$@e`4eYvPsH->BQQ ziT|lI)NeQ;8N=@}8cOL7TIKc~9g2)s=>z_*$F(P>uJWBJ1ayTPqt^ECu!558h>9EIOw7}xPv z?k?baf^Nu8tz$8r!YCKJaTdaTq5Zg8Y#fNkB%u*d(;gz$JKs{FHM2M7R0o@)QQv&h zngX-FUoBU#+TkA+ttkT@jsM`Lh$1erH|a#Tw@Jx?`)Trp^@(0GFczp!6bTT$-;CrE zX-8|WJ5lB#%oN5+GJ{o?^C~@h8iB{D6Pdr-kA3v!>dE85Atb;a-ae>F2bL;s`EL@j1vvy>?*m$VD?Kb2(&t9Vlx)vF+Lep9Zv8)i(@;!=p@d9#p&R} zwV93%ME;#6Q%4n0gtKAXSH0V%O{@1t?rVsv4>7b3Zlp2DGl6KSy zU1Urcm9Z@B!;gbk!HnB_*t3qgT_R($7Wr3CC9%K5awvy(wz@4;W;&jWFr~pIpdkjN z)+9C=U^!mlU5o^_V=VE))f`dDVCYdOd2GzdU<%up3HS=PlP3r17tXMYu;$Zr3BeQB z6v%ub`iG8j%8bziNQGS&y`nHAG`VxioLNfp%_hH(cK7DKX97(~`MetQZtT?M?-*^O zTH*xr86W?HnP9HAd2W1@&P0A6y>6X-tui>2-ZJwjlQTka&u(G#sU|5g3qKz6*{*0y zpaXAjLoOkHw4ylW`n%*>6pGz)YBT;^f@N#VDr;PMce<8hg!kDc=tHb&^{}4a4n{)Q z_mH#q!F0Q4y{sPya$JXc!3*P?u;C;bWYbLEuw0X^vj=`%qzp8=Ss$>w!`5EW`Q;$$ z;6I$tOq%LGb7GV7TFZCP2$;9H6@LrH2nySFU!OG>e7jn zAEoGR28dhI@H3TUCbz%wsuvF~gj+C|7l=016^R;&;u1#md~f@xv|`|RjJ%G*f-ZNO&pnf8v7h4^ zgsRY#NjIXME^NftB=K?hfNbKb0)EEFyy?wEqTgrUCs*sbj#g4}_7BbZQ1Pdp+~dgj z1m5LP(uz%TEH3RBVr9&+HnMk=pSPMQDt3F}`=C#lC_YTk=#!Q$d*6gw>s%gi8mywz zG)Ze*gpTMRub4RD zHF}6TYEkbehYPOyl1^zSqGjv8OOWp;bDC;mfe#wNM#y>EPStToj1Dp%$=Jc(==!W7 z2Lvwih3I}Ltg9ZPt$f`0d_1&OJtl#?&@23tw^GE|;0;1dRZcIvY%j@>LWX$Q07wzv z<(x-q3W`>tqnMg$O8tyg#Jz9pCz;tw68xbi%js4#eeJo?D?|{ zbu)r31n!$lyk79eoChfbILgOlt#Xq5+ZsVqQ(ayatGFFm3WUHRv#RR1HG{SW=T3Sm z=bu9br_tsv$~i(LYTN=joa>zldwu3;bX8KPEr@}+qzQ!GywM4oyVxb`bx$wHR~TLe zCv`d35ldqbbq=@X-mjtyn~|d~P8*MSBf@-Cd+^h+pMUxX6Ag}~ml*~=(c|=eVG#QI zaipM4f3|3d4^gkT;o%bzLz5;}$MJF_PB+H4ezm88>pW?ol zBT-!yt$o^J@9E6CPgD21_LqiG4o6(?-Ues-x87Te7Q$SnNgH`xgG@aDW(tqju}q(ONtf$FqJtR7@g;w8`{AbZmW>_4rNN#DS(wZ zoh%qx>IX=;$mQ(kObW_CfAdB%;K9#=tkfe3Ly@xPIttI@JmzAc^ z%UU_W^NdPS2*7M47{jkL<|sWDp%AmT;^vn_%~|x!-Z|VY?8WASbxn{|U7daAH2eop zQ|zp%qvDf>_oP-|TjbThX!Gk3DC0H`5|Yw2@4cnXN*{^-jph?y6NbOIyNi{xJH*1u zO*Q=Sc+W0)jtXSeiMp0 z>Ge1y*Vk=j|3v6tTDjh-&LDI&h zro!4o4&t&Ip;&m@X-*lY--FPPRcDd@z_+Et2sjXs&DZ#5T@hGvZ@hzrGq@S-e#UJ4 zang~W*_l$k-33I2YSuax-Oc#bL}@o6sQH+UF=pN#Cwf7@B2-?Lwl6fx4!{Ypf{|Zt zEa_;IT1cYljx)X-1mxR zKq|d`f7rU`=O*7wOTo}ei$fcT`#&8g+A3f z%JprB4mz?eb3NB@Cm$8JWq0h4T466$vVeSjLPMWc9IL8N#m zJm#a*Z+c|B@t7T4*{Ab^JvJ_#jqBso8x$dWxw$ZjU=CGD;_2XhrPQwGa1343(08Q^ zb74eW@4qj^Ri`b=l0x_I!5&9ZEr_rAk&ZDfKTFneN-;ZQKK-&|@J1&HVt`G{*Qw5D z$3?VoGw}*%0Rz7#Hb6vyqd(2_m)aibl+dP;8sp*RtIWJ?=)j7az zxQ{n{!F*3vcLue9&24I7LgO9uy$%TUtW(~A%RbEJP|LFzRR8Ro59VyJI{9Ap$rlr= zaL12088uuHDaw|D5)!i9wuyyVqs@?mZ13{!>lVN`h`&#g?8)x{HD6bKr!Eios15l| zdt;YoXW+;Kos9(URsj(TtvBS@OW0f$4@sI-e$)#0j@EpUf2JfOWK4Ekl&IUDh%3=V zF~{V;wfT`x#pby=R!+(SZ&3l}4syl8@AcPWxOK~$Ow(!FgS9CRR<-70%_>@Pc6HYK z0-Aykyw1N2^-dvJd_}z4$`z%0$}oEUM8`LwYXz=N^6C&A)yejy(ZDRZ%4tn`#g`15 zvfVy5rcZx1pa{zxJ|QzTdB`pA+=Nr!O7bdwtsmHilip^)ECnkkFqD6XjsB&8GIUR6 z+UYAphgAFa^ z_3TxO|EnDA7J9U#*IM!9{y}BFOU?|ItwT|gvWHY#_T`U-W<+~GpDOgn@{3#i^uIY< zyo>+}hbTx$(bvZZNckQzHqw9Btgp|GJN6f}{h?srLk1w-YS?#$Hnlzw(<=?qd6mycZ>SplNxwE z=pQY?Z5cPyaTj}Tnu1%)`7`1_T7>_V^aiAEP5XLc{(`K3&wF=Y-hkGvdEW-zuIC>R W22w^tzj4I5{wZ~q6(G7Jy^ literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/out/GUI/SocketTestMenu.class b/pitiupi.testSocket/out/GUI/SocketTestMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..724eae7b0f1314eca64b1a1d6d958a91c7231beb GIT binary patch literal 1306 zcma)6ZBG+H5Pr54u00M~%A2UX3euLs;S0VMQK+bx){qoS^xKwOFhexIXICdA^n~wE9z|o6_)QJBaGN2*cRbU!HiffmJ7r-oEX6NGDpN`){1|xE z)5W2%Jbkrpmo;5aSi(t5;4uy3m>>$dVYD7IOf{0Y5+G5K*-vS>gJ~j~AQ%>Xqn2vO z1RK$`>s8#vtb(|P1d53614@>HH#&|5R89H6c|P>X5FZdJPT%QgKkE$rX}82 z%0=O9@w#oVOZ3XB|10wN6jKm34-rZjcwrM&5h zG=sKbQ6pwb+;xSk;3dOM8z+~gr(lg??E0(p1o&KFl8O+Z`Jus=^G~|~?K?3?Yl@_z zd`;-TkURlP&V7fHjP=wI`GNkACm777Vna3DNF`4(0@N^?Ow};C{k4ubPwN!n17QTA z(%Ov(`4~nIM$wB|lI9U557Ywc*4nVP=YngoI}Zn4K$V^3{Xgmv=87O?$ci* Vy#s+CD3E^TeARlD!4-B-IW($(7j=e;+XnK1g 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 Ts7zOyi{@t0J)+wj%EHb&;lq6q literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/out/plugin/SocketTest.class b/pitiupi.testSocket/out/plugin/SocketTest.class new file mode 100644 index 0000000000000000000000000000000000000000..549bbe961e20b616ea8af3bb7051b74d7eb6b4f3 GIT binary patch literal 1934 zcmah}YgZFj6x|mRCWPT34>f{{C_3R46hRAU1qv9O0BsOU>1#-C>1dcqGczbZrN5wS z^;7L?VXd-OmwxSk>SN!@1Oj9&KjhB6_v~}dKIiP*zyJO7F93^>aWtS&LqtauO#&S+ z%{?h?>S_XL_|E!*-Q3p5(ZjTmAAE$h%>C#imRzEW6;mj-wr&ic6P3uaPNP zp5>RUl!9hW%dUWCk{iwF!9@+1bX-P4;6kbB?^t$CIFfP$f+w*BE@tZGoYBxrnx{=! zY5Q?p!Bs`(nn1#+@0;9+qaQak4CuItTg*|Pvw&t63MwigMn<*yP0D?3vC+@eEo;(n zTcF*RUP^J!O4l`aIG;f^pQJ!vFdEBA&F_11u3R?v({{=Ca$Z@QyKxv8R#Zm>qQ=&| ziZ({pRiDZ*PdSWYTshnoxLo0rV(c0O8O1S*2_5$_DG+CxLRAypMlvX&Rw*-Tb`Nws z#76>cWto@Oo(!wtw2jP}%7Th#1iGpm)2oYb^0MSvj;-O5K!0Eew75_-U3bOtmK@(M z9HW}?F`j6c(=m^QQ`*h#yPn*oWF4Oh?x}EPd240M4m(D=i&)aItm7%tRT@FI;{*aR z&tZc(B~?Lf&6QgQ`4kxqSsg1_tp+)rh?6g=v_+dt!cGTi!Vqdyp9$Qq>L!#jsqUGc zTySige?#_UEs(fCWWgy&3MFINa>d`>mgRMGyT}`DM|vyfE_cn`&H3IBPMLG#enXaB zMi6M_AzhHRXMJx;8udJ<>d9(og*~3wCDvQzq(&DSII-58XXamJ%~Ft9!`A{0Tl3UW zIP`PW1qM$3%PN+aFQwM=rIX?)2C@nLmB3wrTOaaKGN;rWyYh-G6dhLIj^8N%{G Gs>1*0$Es=o literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/pitiupi.testSocket.iml b/pitiupi.testSocket/pitiupi.testSocket.iml new file mode 100644 index 0000000..4e2cbb3 --- /dev/null +++ b/pitiupi.testSocket/pitiupi.testSocket.iml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pitiupi.testSocket/src/GUI/SocketTestMenu.java b/pitiupi.testSocket/src/GUI/SocketTestMenu.java index 8b4984f..0f04bf9 100644 --- a/pitiupi.testSocket/src/GUI/SocketTestMenu.java +++ b/pitiupi.testSocket/src/GUI/SocketTestMenu.java @@ -8,7 +8,7 @@ public class SocketTestMenu extends JMenu { public SocketTestMenu(SocketTestWindow socketTestWindow) { this.socketTestWindow = socketTestWindow; - this.setText("Chat"); + this.setText("MP-Chat"); JMenuItem menuItem = new JMenuItem(); menuItem.setText("Show Chat Window"); menuItem.addActionListener(this::showTestWindow); diff --git a/pitiupi.testSocket/src/GUI/SocketTestWindow.java b/pitiupi.testSocket/src/GUI/SocketTestWindow.java index 32f3944..e4d70d0 100644 --- a/pitiupi.testSocket/src/GUI/SocketTestWindow.java +++ b/pitiupi.testSocket/src/GUI/SocketTestWindow.java @@ -96,7 +96,7 @@ public class SocketTestWindow extends JFrame { try { TestMessage msg = createMessage("TCP Unicast"); InetAddress ip = InetAddress.getByName(ipField.getText()); - mainWindow.getSocketTCP().send(msg.toByteArray(), ip); + mainWindow.getSocketTCP().send(msg, ip); } catch (Exception ex) { Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); } @@ -106,7 +106,7 @@ public class SocketTestWindow extends JFrame { try { TestMessage msg = createMessage("UDP Unicast"); InetAddress ip = InetAddress.getByName(ipField.getText()); - mainWindow.getSocketUDP().sendUnicast(msg.toByteArray(), ip); + mainWindow.getSocketUDP().sendUnicast(msg, ip); } catch (Exception ex) { Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); } @@ -114,7 +114,7 @@ public class SocketTestWindow extends JFrame { public void sendMulticast() { try { TestMessage msg = createMessage("UDP Multicast"); - mainWindow.getSocketUDP().sendMulticast(msg.toByteArray()); + mainWindow.getSocketUDP().sendMulticast(msg); } catch (Exception ex) { Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); } diff --git a/pitiupi.testSocket/src/plugin/SocketTest.java b/pitiupi.testSocket/src/plugin/SocketTest.java index 66ef6f0..145dbca 100644 --- a/pitiupi.testSocket/src/plugin/SocketTest.java +++ b/pitiupi.testSocket/src/plugin/SocketTest.java @@ -5,13 +5,14 @@ import GUI.SocketTestWindow; import net.TestMessage; import pitiupi.GUI.MainWindow; import pitiupi.net.Message; -import pitiupi.plugin.Plugin; +import pitiupi.net.tcp.TcpConnection; +import pitiupi.plugin.PrivateConnectionPlugin; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; -public class SocketTest implements Plugin{ +public class SocketTest implements PrivateConnectionPlugin{ SocketTestWindow socketTestWindow; @Override @@ -29,6 +30,11 @@ public class SocketTest implements Plugin{ return "0"; } + @Override + public String getIdentifier() { + return "Socket.Test.123456"; + } + @Override public void createPlugin(MainWindow mainWindow) { this.socketTestWindow = new SocketTestWindow(mainWindow); @@ -41,8 +47,8 @@ public class SocketTest implements Plugin{ } @Override - public void receiveMessage(byte[] bytes) { - ByteArrayInputStream bis = new ByteArrayInputStream(bytes); + public void receiveMessage(byte[] message) { + ByteArrayInputStream bis = new ByteArrayInputStream(message); ObjectInputStream ois; try { ois = new ObjectInputStream(bis); @@ -53,4 +59,19 @@ public class SocketTest implements Plugin{ System.out.println(ex.toString()); } } + + @Override + public void receivePrivateConnection(TcpConnection tcpConnection) { + + } + + @Override + public void receiveBytes(TcpConnection connection, byte[] bytes) { + + } + + @Override + public void onSocketClosed(TcpConnection tcpConnection) { + + } } diff --git a/pitiupi/src/pitiupi/control/HeartbeatManager.java b/pitiupi/src/pitiupi/control/HeartbeatManager.java index 1cfa480..08b21be 100644 --- a/pitiupi/src/pitiupi/control/HeartbeatManager.java +++ b/pitiupi/src/pitiupi/control/HeartbeatManager.java @@ -66,7 +66,7 @@ public class HeartbeatManager { private void announce() { try { HeartbeatMessage msg = new HeartbeatMessage(mainWindow.getUserName(), instanceId); - mainWindow.getSocketUDP().sendMulticast(msg.toByteArray()); + mainWindow.getSocketUDP().sendMulticast(msg); } catch (IOException ex) { Logger.getLogger(HeartbeatManager.class.getName()).log(Level.WARNING, "Falha ao enviar heartbeat", ex); } diff --git a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java index 326d23d..074c36c 100644 --- a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java +++ b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java @@ -316,47 +316,25 @@ public class SocketTCP extends Thread { while (running) { try { byte[] bytes = connection.receive(); - try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes); - ObjectInputStream ois = new ObjectInputStream(bis)) { - Object object = ois.readObject(); - if (object instanceof Message message) { - SysInfoMessage sysMessage = SysInfoMessage.parseSystemInfo(message); + SysInfoMessage sysMessage = SysInfoMessage.parseSystemInfo(bytes); - if (sysMessage == null) { - for (Plugin plugin : main.getPlugins()) { - plugin.receiveMessage(message); - } - continue; - } - - switch (sysMessage.getType()) { - case CONNECTION_CLOSED, INTERNAL_ERROR -> { - connectionManager.closeConnection(connection); - return; - } - case MESSAGE_REJECTED -> { - logger.log(Level.SEVERE, "Somehow sent something that was not an Message"); - } - default -> {} - } - } - else { - SysInfoMessage.sendSystemInfo( - connection, - SysInfoType.MESSAGE_REJECTED, - "Public messages must be instances of Message" - ); + if (sysMessage == null) { + for (Plugin plugin : main.getPlugins()) { + plugin.receiveMessage(bytes); } + continue; } - catch (ClassNotFoundException ex) { - SysInfoMessage.sendSystemInfo( - connection, - SysInfoType.INTERNAL_ERROR, - "class Message not found." - ); - logger.log(Level.SEVERE, null, ex); - connectionManager.closeConnection(connection); + + switch (sysMessage.getType()) { + case CONNECTION_CLOSED, INTERNAL_ERROR -> { + connectionManager.closeConnection(connection); + return; + } + case MESSAGE_REJECTED -> { + logger.log(Level.SEVERE, "Somehow sent something that was not an Message"); + } + default -> {} } } catch (SocketTimeoutException ex) { diff --git a/pitiupi/src/pitiupi/net/tcp/SysInfoMessage.java b/pitiupi/src/pitiupi/net/tcp/SysInfoMessage.java index e10c9b7..9e149eb 100644 --- a/pitiupi/src/pitiupi/net/tcp/SysInfoMessage.java +++ b/pitiupi/src/pitiupi/net/tcp/SysInfoMessage.java @@ -48,11 +48,4 @@ public class SysInfoMessage extends Message { } return null; } - - public static SysInfoMessage parseSystemInfo(Message message) { - if (message instanceof SysInfoMessage) { - return (SysInfoMessage) message; - } - return null; - } } diff --git a/pitiupi/src/pitiupi/net/udp/SocketUDP.java b/pitiupi/src/pitiupi/net/udp/SocketUDP.java index da9fa5f..a4a42f2 100644 --- a/pitiupi/src/pitiupi/net/udp/SocketUDP.java +++ b/pitiupi/src/pitiupi/net/udp/SocketUDP.java @@ -74,7 +74,7 @@ public class SocketUDP extends Thread { * @param msg mensagem serializada a ser enviada. * @throws IOException caso ocorra um erro durante o envio. */ - public void sendMulticast(byte[] msg) throws IOException { + public void sendMulticast(Message msg) throws IOException { send(msg, this.address); } @@ -85,7 +85,7 @@ public class SocketUDP extends Thread { * @param destinationAddress endereço IP do peer destinatário. * @throws IOException caso ocorra um erro durante o envio. */ - public void sendUnicast(byte[] msg, InetAddress destinationAddress) throws IOException { + public void sendUnicast(Message msg, InetAddress destinationAddress) throws IOException { send(msg, destinationAddress); } @@ -96,9 +96,10 @@ public class SocketUDP extends Thread { * @param destinationAddress endereço de destino. * @throws IOException caso ocorra um erro durante o envio. */ - private void send(byte[] msg, InetAddress destinationAddress) throws IOException { + private void send(Message msg, InetAddress destinationAddress) throws IOException { DatagramPacket msgPacket; - msgPacket = new DatagramPacket(msg, msg.length, destinationAddress, this.main.getPort()); + byte[] buf = msg.toByteArray(); + msgPacket = new DatagramPacket(buf, buf.length, destinationAddress, this.main.getPort()); multicastSocket.send(msgPacket); } @@ -149,14 +150,9 @@ public class SocketUDP extends Thread { continue; } - Message message = tryParseMessage(msgPacket.getData()); - if (message == null) { - continue; - } - for (Plugin plugin : main.getPlugins()) { System.out.println(msgPacket.getAddress().toString()); - plugin.receiveMessage(message); + plugin.receiveMessage(msgPacket.getData()); } } } @@ -179,20 +175,6 @@ public class SocketUDP extends Thread { } } - private Message tryParseMessage(byte[] data) { - try { - ByteArrayInputStream bis = new ByteArrayInputStream(data); - ObjectInputStream ois = new ObjectInputStream(bis); - - Object object = ois.readObject(); - - if (object instanceof Message message) return message; - return null; - } catch (IOException | ClassNotFoundException ex) { - return null; - } - } - /** * Inicia a recepção de mensagens UDP. */ diff --git a/pitiupi/src/pitiupi/plugin/Plugin.java b/pitiupi/src/pitiupi/plugin/Plugin.java index 6159842..108deb1 100644 --- a/pitiupi/src/pitiupi/plugin/Plugin.java +++ b/pitiupi/src/pitiupi/plugin/Plugin.java @@ -47,6 +47,6 @@ public interface Plugin { * * @param message mensagem serializada recebida. */ - public void receiveMessage(Message message); + public void receiveMessage(byte[] message); } \ No newline at end of file From 0ec3129a220067e2e595adf5bbf82e7e6e8c6c57 Mon Sep 17 00:00:00 2001 From: GustavoHMDS Date: Mon, 28 Sep 2026 21:43:17 -0300 Subject: [PATCH 3/7] WIP TCP bug fix --- pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java | 4 +++- pitiupi/src/pitiupi/net/tcp/SocketTCP.java | 1 + pitiupi/src/pitiupi/net/udp/SocketUDP.java | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java b/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java index 8982c12..e35bd32 100644 --- a/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java +++ b/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java @@ -62,6 +62,7 @@ public class ConnectionFactory { HandshakeMessage handshake = new HandshakeMessage(isPrivate, sender, receiver); connection.send(handshake.toByteArray()); + System.out.println("Enviou handhsake"); HandshakeMessage handshakeResponse = validateConnection(connection); if (handshakeResponse == null) return null; @@ -148,12 +149,13 @@ public class ConnectionFactory { Object object = ois.readObject(); if (object instanceof Message message) { - if (SysInfoMessage.parseSystemInfo(message) != null) { + if (SysInfoMessage.parseSystemInfo(bytes) != null) { //TODO: Tratar erros return null; } if (message instanceof HandshakeMessage handshake) { + System.out.println("Recebeu handshake"); return (validateHandshake(handshake, connection)) ? handshake : null; } } diff --git a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java index 074c36c..e35f72f 100644 --- a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java +++ b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java @@ -211,6 +211,7 @@ public class SocketTCP extends Thread { */ private void acceptIncomingConnection(Socket socket) { connectionExecutor.submit(() -> { + System.out.println("Accepted TCP connection."); TcpConnection connection = ConnectionFactory.receiveConnection(socket); if (connection == null) return; diff --git a/pitiupi/src/pitiupi/net/udp/SocketUDP.java b/pitiupi/src/pitiupi/net/udp/SocketUDP.java index a4a42f2..0d07b29 100644 --- a/pitiupi/src/pitiupi/net/udp/SocketUDP.java +++ b/pitiupi/src/pitiupi/net/udp/SocketUDP.java @@ -75,7 +75,7 @@ public class SocketUDP extends Thread { * @throws IOException caso ocorra um erro durante o envio. */ public void sendMulticast(Message msg) throws IOException { - send(msg, this.address); + send(msg, address); } /** @@ -144,6 +144,8 @@ public class SocketUDP extends Thread { } throw ex; } + System.out.println("Message! it is from: " + msgPacket.getSocketAddress()); + HeartbeatMessage heartbeat = tryParseHeartbeat(msgPacket.getData()); if (heartbeat != null) { main.getHeartbeatManager().receiveHeartbeat(heartbeat, msgPacket.getAddress()); From e7c89837756820abcb175231353912d529aae623 Mon Sep 17 00:00:00 2001 From: GustavoHMDS Date: Mon, 28 Sep 2026 22:05:14 -0300 Subject: [PATCH 4/7] WIP TCP bug fix 2 --- .../pitiupi/net/tcp/ConnectionFactory.java | 24 +++++++++++++++---- pitiupi/src/pitiupi/net/tcp/SocketTCP.java | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java b/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java index e35bd32..cb6943a 100644 --- a/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java +++ b/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java @@ -64,9 +64,14 @@ public class ConnectionFactory { connection.send(handshake.toByteArray()); System.out.println("Enviou handhsake"); HandshakeMessage handshakeResponse = validateConnection(connection); + System.out.println("Recebeu resposta"); - if (handshakeResponse == null) return null; + if (handshakeResponse == null) { + System.out.println("Conexao falhou"); + return null; + } + System.out.println("Sucesso na conexao"); connection.setTimeout(STANDARD_TIMEOUT); return connection; @@ -101,7 +106,12 @@ public class ConnectionFactory { HandshakeMessage handshake = validateConnection(connection); - if (handshake == null) return null; + if (handshake == null) { + System.out.println("Conexao falhou"); + return null; + } + + connection.send(handshake.createResponse().toByteArray()); connection.setSender(handshake.getSender()); connection.setReceiver(handshake.getReceiver()); @@ -109,6 +119,7 @@ public class ConnectionFactory { connection.setTimeout(STANDARD_TIMEOUT); + System.out.println("Sucesso na conexao"); return connection; } catch (IOException ex) { @@ -149,8 +160,9 @@ public class ConnectionFactory { Object object = ois.readObject(); if (object instanceof Message message) { - if (SysInfoMessage.parseSystemInfo(bytes) != null) { - //TODO: Tratar erros + SysInfoMessage sysInfo = SysInfoMessage.parseSystemInfo(bytes); + if (sysInfo != null) { + System.out.println(sysInfo.getMessage()); return null; } @@ -210,6 +222,7 @@ public class ConnectionFactory { SysInfoType.CONNECTION_REJECTED, "Invalid Sender: " + sender + "." ); + System.out.println("Handshake invalido"); return false; } if (receiver == null || receiver.isBlank()) { @@ -218,8 +231,11 @@ public class ConnectionFactory { SysInfoType.CONNECTION_REJECTED, "Invalid Receiver: " + receiver + "." ); + System.out.println("Handshake invalido"); return false; } + + System.out.println("Handshake valido"); return true; } } diff --git a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java index e35f72f..46982c4 100644 --- a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java +++ b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java @@ -135,6 +135,7 @@ public class SocketTCP extends Thread { connection = connectionManager.getPublicConnection(destinationAddress); if (connection != null && !connection.isClosed()) return connection; + System.out.println("Trying to Establish TCP connection."); connection = establishOutgoingConnection(destinationAddress, senderId, receiverId, false); From 0c71a85cba8ca0bd2c7f5672dfa9316f9470b449 Mon Sep 17 00:00:00 2001 From: GustavoHMDS Date: Tue, 29 Sep 2026 00:21:04 -0300 Subject: [PATCH 5/7] WIP bug fix 3 --- pitiupi.testSocket/dist/testSocket.jar | Bin 6537 -> 0 bytes pitiupi.testSocket/out/GUI/ChatMenu.class | Bin 0 -> 4149 bytes pitiupi.testSocket/out/GUI/ChatWindow.class | Bin 0 -> 3750 bytes .../out/GUI/PrivateChatWindow.class | Bin 0 -> 2281 bytes .../out/GUI/PublicChatWindow.class | Bin 0 -> 3719 bytes .../META-INF/services/pitiupi.plugin.Plugin | 2 +- .../out/control/ChatController.class | Bin 0 -> 2224 bytes .../out/net/TestChatMessage.class | Bin 0 -> 747 bytes pitiupi.testSocket/out/plugin/TestChat.class | Bin 0 -> 3334 bytes pitiupi.testSocket/src/GUI/ChatMenu.java | 84 ++++++++++ pitiupi.testSocket/src/GUI/ChatWindow.java | 94 +++++++++++ .../src/GUI/PrivateChatWindow.java | 46 ++++++ .../src/GUI/PublicChatWindow.java | 93 +++++++++++ .../src/GUI/SocketTestMenu.java | 21 --- .../src/GUI/SocketTestWindow.java | 151 ------------------ .../META-INF/services/pitiupi.plugin.Plugin | 2 +- .../src/control/ChatController.java | 62 +++++++ ...{TestMessage.java => TestChatMessage.java} | 6 +- pitiupi.testSocket/src/plugin/SocketTest.java | 77 --------- pitiupi.testSocket/src/plugin/TestChat.java | 100 ++++++++++++ pitiupi/src/pitiupi/GUI/Login.java | 1 - 21 files changed, 484 insertions(+), 255 deletions(-) delete mode 100644 pitiupi.testSocket/dist/testSocket.jar create mode 100644 pitiupi.testSocket/out/GUI/ChatMenu.class create mode 100644 pitiupi.testSocket/out/GUI/ChatWindow.class create mode 100644 pitiupi.testSocket/out/GUI/PrivateChatWindow.class create mode 100644 pitiupi.testSocket/out/GUI/PublicChatWindow.class create mode 100644 pitiupi.testSocket/out/control/ChatController.class create mode 100644 pitiupi.testSocket/out/net/TestChatMessage.class create mode 100644 pitiupi.testSocket/out/plugin/TestChat.class create mode 100644 pitiupi.testSocket/src/GUI/ChatMenu.java create mode 100644 pitiupi.testSocket/src/GUI/ChatWindow.java create mode 100644 pitiupi.testSocket/src/GUI/PrivateChatWindow.java create mode 100644 pitiupi.testSocket/src/GUI/PublicChatWindow.java delete mode 100644 pitiupi.testSocket/src/GUI/SocketTestMenu.java delete mode 100644 pitiupi.testSocket/src/GUI/SocketTestWindow.java create mode 100644 pitiupi.testSocket/src/control/ChatController.java rename pitiupi.testSocket/src/net/{TestMessage.java => TestChatMessage.java} (76%) delete mode 100644 pitiupi.testSocket/src/plugin/SocketTest.java create mode 100644 pitiupi.testSocket/src/plugin/TestChat.java diff --git a/pitiupi.testSocket/dist/testSocket.jar b/pitiupi.testSocket/dist/testSocket.jar deleted file mode 100644 index 3b6438b3ccb62d29b66c776245e082711a2c73e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6537 zcmaJ_1z42Z)<(K>kZweBq&p-8=@EwRlo5~yX;A4HrCS;a=?19*>F$OZ8bwM#Q261V z^B=h9o_p6k-}8O*%vyV`*?WKcUGEE0MnT0!Lc&BsT8R@kLb_vENT^7vPr%Y#ifZzY zF8h#>K-aDSBuq@q|8NCdhyCTMDy^m{|3niERFywc9q3n4<^qo5DRZ$84GdRla8K~9 ztUCjhR5=w@N8O65HMn^v`9}D_Bm0k(RE89_9ETpU_dHVKyvIJZwhmuMzD|mP34Ie6 zCVQPi=K8uR;*WZ#4gS4e)azdrv=krRmO1gae?ZKdd!p_Xa zB^|u0Mj{QkM8{T63`$6d_-Kd*Q8qhxUB`$`N?Ikr+(rCb$O=Ob;?cVo*I|)tqsV=5 zFLKyYylEa&R~i9LPj|T(@)$}>c92qQLDq%wk=onn5RQ%nss*eW6-q?ps()&LlVvV#O%Wi6gIzp5%FOaCUpAQbcv7EphxTwyhvulbyue@HC& z+>p$RBCg|$px_8lfH3Tb{(LuiTd>i{A`%bE3B^ zEJJk)URN~35!yt7z95GQ*St&J@Z^J8?mR-;jxqV28%&jyEl+|9lOdnbFpX6$Httd# zV0{XC$^;v^DoEh_I58KquD2d;8k)P5r;H10)map$TfW~b#^U(}xBq^b?PR5+kSF2% z?lbRUMyL^JJ*AbPd?H)ZrLN1RAF7_=aM(qTf`+JH((&Z&%l#L#YpCrWTah%Up;=8{+UI`mr76;8UlJDt zIXY5#sh^kCez2u!jX)NHo^)MNz~U0S^9??E8W#e%*qm|a8dY85${dGDGF}(pj$eT@ zUTX!9_8VWi2J!%j`uN>MMQt zjRzfjw$l_vr!tuY7X>fUvJy|l&KH+((y-}=QdD(fTe;<{j$Kvea&0Aou zMZlPWjD$pqcK22M`yQwKk3Fsfd1>k3@#ikr#qt46(p(ys>ItG?_2VJm3$qgp#0;gE zE`9LWl!P%g04H0m5~ak>eQFU4RUP${c6HvX<7yAv@9goa%(V9Q#Wg1_-!EDWzCr9; zuLkUf@a%uD*BzB!9elp}vD9DnDBTzNan8P z=~SS(B<|T_=^x498-elYQdX)X&lpl3hDMi9#@A|C_YIwMKg(JmHGB{g-TFC6$hJNP` z|JS$ib7m~Fw7m12L68hEqTEO-pf^@bM}c(1NoQ@*W{)&+`)FR6oe2{TpEZ0NWW3o^7<>@;{CCJeu* zIOl5{)2#HGz}=K3RuhC8GfK0r(2}TQ!#?YBkpTXZ(-O(d;=!*K)8j0DC9)N7f5_8B z&2%OWMIv#40W@qqOZ2}CT=~s7m=a!5BCzJS-mP$A?InCFk(E<$@e`4eYvPsH->BQQ ziT|lI)NeQ;8N=@}8cOL7TIKc~9g2)s=>z_*$F(P>uJWBJ1ayTPqt^ECu!558h>9EIOw7}xPv z?k?baf^Nu8tz$8r!YCKJaTdaTq5Zg8Y#fNkB%u*d(;gz$JKs{FHM2M7R0o@)QQv&h zngX-FUoBU#+TkA+ttkT@jsM`Lh$1erH|a#Tw@Jx?`)Trp^@(0GFczp!6bTT$-;CrE zX-8|WJ5lB#%oN5+GJ{o?^C~@h8iB{D6Pdr-kA3v!>dE85Atb;a-ae>F2bL;s`EL@j1vvy>?*m$VD?Kb2(&t9Vlx)vF+Lep9Zv8)i(@;!=p@d9#p&R} zwV93%ME;#6Q%4n0gtKAXSH0V%O{@1t?rVsv4>7b3Zlp2DGl6KSy zU1Urcm9Z@B!;gbk!HnB_*t3qgT_R($7Wr3CC9%K5awvy(wz@4;W;&jWFr~pIpdkjN z)+9C=U^!mlU5o^_V=VE))f`dDVCYdOd2GzdU<%up3HS=PlP3r17tXMYu;$Zr3BeQB z6v%ub`iG8j%8bziNQGS&y`nHAG`VxioLNfp%_hH(cK7DKX97(~`MetQZtT?M?-*^O zTH*xr86W?HnP9HAd2W1@&P0A6y>6X-tui>2-ZJwjlQTka&u(G#sU|5g3qKz6*{*0y zpaXAjLoOkHw4ylW`n%*>6pGz)YBT;^f@N#VDr;PMce<8hg!kDc=tHb&^{}4a4n{)Q z_mH#q!F0Q4y{sPya$JXc!3*P?u;C;bWYbLEuw0X^vj=`%qzp8=Ss$>w!`5EW`Q;$$ z;6I$tOq%LGb7GV7TFZCP2$;9H6@LrH2nySFU!OG>e7jn zAEoGR28dhI@H3TUCbz%wsuvF~gj+C|7l=016^R;&;u1#md~f@xv|`|RjJ%G*f-ZNO&pnf8v7h4^ zgsRY#NjIXME^NftB=K?hfNbKb0)EEFyy?wEqTgrUCs*sbj#g4}_7BbZQ1Pdp+~dgj z1m5LP(uz%TEH3RBVr9&+HnMk=pSPMQDt3F}`=C#lC_YTk=#!Q$d*6gw>s%gi8mywz zG)Ze*gpTMRub4RD zHF}6TYEkbehYPOyl1^zSqGjv8OOWp;bDC;mfe#wNM#y>EPStToj1Dp%$=Jc(==!W7 z2Lvwih3I}Ltg9ZPt$f`0d_1&OJtl#?&@23tw^GE|;0;1dRZcIvY%j@>LWX$Q07wzv z<(x-q3W`>tqnMg$O8tyg#Jz9pCz;tw68xbi%js4#eeJo?D?|{ zbu)r31n!$lyk79eoChfbILgOlt#Xq5+ZsVqQ(ayatGFFm3WUHRv#RR1HG{SW=T3Sm z=bu9br_tsv$~i(LYTN=joa>zldwu3;bX8KPEr@}+qzQ!GywM4oyVxb`bx$wHR~TLe zCv`d35ldqbbq=@X-mjtyn~|d~P8*MSBf@-Cd+^h+pMUxX6Ag}~ml*~=(c|=eVG#QI zaipM4f3|3d4^gkT;o%bzLz5;}$MJF_PB+H4ezm88>pW?ol zBT-!yt$o^J@9E6CPgD21_LqiG4o6(?-Ues-x87Te7Q$SnNgH`xgG@aDW(tqju}q(ONtf$FqJtR7@g;w8`{AbZmW>_4rNN#DS(wZ zoh%qx>IX=;$mQ(kObW_CfAdB%;K9#=tkfe3Ly@xPIttI@JmzAc^ z%UU_W^NdPS2*7M47{jkL<|sWDp%AmT;^vn_%~|x!-Z|VY?8WASbxn{|U7daAH2eop zQ|zp%qvDf>_oP-|TjbThX!Gk3DC0H`5|Yw2@4cnXN*{^-jph?y6NbOIyNi{xJH*1u zO*Q=Sc+W0)jtXSeiMp0 z>Ge1y*Vk=j|3v6tTDjh-&LDI&h zro!4o4&t&Ip;&m@X-*lY--FPPRcDd@z_+Et2sjXs&DZ#5T@hGvZ@hzrGq@S-e#UJ4 zang~W*_l$k-33I2YSuax-Oc#bL}@o6sQH+UF=pN#Cwf7@B2-?Lwl6fx4!{Ypf{|Zt zEa_;IT1cYljx)X-1mxR zKq|d`f7rU`=O*7wOTo}ei$fcT`#&8g+A3f z%JprB4mz?eb3NB@Cm$8JWq0h4T466$vVeSjLPMWc9IL8N#m zJm#a*Z+c|B@t7T4*{Ab^JvJ_#jqBso8x$dWxw$ZjU=CGD;_2XhrPQwGa1343(08Q^ zb74eW@4qj^Ri`b=l0x_I!5&9ZEr_rAk&ZDfKTFneN-;ZQKK-&|@J1&HVt`G{*Qw5D z$3?VoGw}*%0Rz7#Hb6vyqd(2_m)aibl+dP;8sp*RtIWJ?=)j7az zxQ{n{!F*3vcLue9&24I7LgO9uy$%TUtW(~A%RbEJP|LFzRR8Ro59VyJI{9Ap$rlr= zaL12088uuHDaw|D5)!i9wuyyVqs@?mZ13{!>lVN`h`&#g?8)x{HD6bKr!Eios15l| zdt;YoXW+;Kos9(URsj(TtvBS@OW0f$4@sI-e$)#0j@EpUf2JfOWK4Ekl&IUDh%3=V zF~{V;wfT`x#pby=R!+(SZ&3l}4syl8@AcPWxOK~$Ow(!FgS9CRR<-70%_>@Pc6HYK z0-Aykyw1N2^-dvJd_}z4$`z%0$}oEUM8`LwYXz=N^6C&A)yejy(ZDRZ%4tn`#g`15 zvfVy5rcZx1pa{zxJ|QzTdB`pA+=Nr!O7bdwtsmHilip^)ECnkkFqD6XjsB&8GIUR6 z+UYAphgAFa^ z_3TxO|EnDA7J9U#*IM!9{y}BFOU?|ItwT|gvWHY#_T`U-W<+~GpDOgn@{3#i^uIY< zyo>+}hbTx$(bvZZNckQzHqw9Btgp|GJN6f}{h?srLk1w-YS?#$Hnlzw(<=?qd6mycZ>SplNxwE z=pQY?Z5cPyaTj}Tnu1%)`7`1_T7>_V^aiAEP5XLc{(`K3&wF=Y-hkGvdEW-zuIC>R W22w^tzj4I5{wZ~q6(G7Jy^ diff --git a/pitiupi.testSocket/out/GUI/ChatMenu.class b/pitiupi.testSocket/out/GUI/ChatMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..65067fef2ec7f61d0bed894adccec041b1c32400 GIT binary patch literal 4149 zcma)9`&%4W8GaA2%&?gRvLtObNeM}*gS zfS_%>)_c8It=4PRc&pmjKm@IqsMT7v-mm|FKly_{>f_^kW(IZ^NS-`A?3{DvJKyC! z@ArLYUija_a{vzEA5qkxRzaPH2Rk^)icY0|I} zF|L&jci6bVO`F@Z(t%V_r}-h*p%*V-n}Yk^%s0M}K}F(M=1rQvq85mBlT*yC@if?Wm|c(Zyv27#B! znC=wVTZ!P5X%+05n}|V0hlT`_JX^<@w5JV$t=IK|@OKF`SHXYK)Qk3b6e;Xcuvf#& zaTisDMTR7UPP%5%bWNj7u*MD7_pjH=lM%KfaAydtv^`m}Eg~LvKL|+0E2v<=p0-=_ zq)ux|9(2KOz}&wiMvuUDk2w-}-@CS)UC?QMc6heL05|py4rVjy-r>ygfd_NP z5B6pSS}Lc##vUGaC+?LbBKHr5d=1=MP1PH#lSIB>;Fd5P{4W*rMWyfST5cW>I$(9AzFP-^f z*R2F0tB)B)6%R4hGK1YwoRPrg1?o^ zfSeO82Ewy+IID?BC-h?*`L@7UFmd&vuv#hTDv_$Bw zq||`zxDzVg&fyU0HW6c|d50`o?-bZyeUL}}>Q zDo#~$YsGqCty${RHK&bXd!@4F;^-;6D2v4t8a|0nu_~~#`rUI= zd%&S^`;6k#_>6+jYWN&J&lb3%D>DqcWLS*DBE9Lub(-*L>GM+>z9@rG3TBy9G@|%2 zE-JW0B}-k@uZ^zT{_JgCxA=LWyaRd%-&^~te<-nOP|ZF>bCT0zj| zGJW$@s^nOh%ZKExf}CKU4Y{O3PA_@!DY(MC^wKqSdTdcQ^mLEFz7?K^$?X-TwXJUo z^oBrfqqfj}sH)4Yyw6m^&?<_gf*qk8Sle=x)xgOc{iduJ>m?)Px$Ksq6M;V4cFV4# zmvV+XVHe6xSZs{oN0LxK*08`?J$@o*KhtVaYI)6XvTtaX#&*^5Cy-l+teeBX}fR-tH=+p@NO zeyZdXqw41BGhp>bc_9glS82WBOW)*;_l9dgpgFAIa31{w-smt#-F1t|j4tBXXj8N)I*;5u2D>Bih@8p4s~DOC-}^GE8c5W~>lblm zH1^;;^w`)O3i0~R*f^iQq&XUy$9btri7WBCIasISN|$_iyI#*--D+IDjPe|2<7(|3 z9*IZdYV0jiQzTyRsp3G1y-lvvB^U6h#P3~QiOytPUBJ7&Su!4(!~2NN2a_`1Iea8Z zTOY4L$Ok2GH52kzf-82{w%e_;^+#sm0|yxd}_sYX_a;0RCffa>YN z4*K|s?nvTUDAMI8pFotn`oblsU3B;n>2M7sy<#L5aDOD xufg|;2eXJSzsR*8;D`M8N7t4|KU*ICf}`J4Uf$O3#vkyf`{VdC{z@F<{|A&Zbjbh! literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/out/GUI/ChatWindow.class b/pitiupi.testSocket/out/GUI/ChatWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..98660b9974e9dcadf32a4b6caf2c35c4bcc01383 GIT binary patch literal 3750 zcma)9`Fj)B6+L6i9y1MLff(Q0AXoHof%=E z8{M*W-}imro3uf8aMH9**EHSt|D!+m>$x){TLORi^7-@3_`P@UJ@4Fe?|Xjne>Z;$ z;0XR>pb5=7VkTP9s-gRmb=kU-@a78kg~Y^|Yn7CS)&m8*;2+e`+&^%7722>$hhd@} zriPA(rpFV>idBTHl`%u!*8Ys2SfS;^BeQvUr1u zjp)&!b8)6{jcZ%_$H&9D%_d%jEwtub%E?)N!Ld)NBHx$Ql%ruo?MYx!v9oS>yHMm#9D(<*uxiti}vQbF#YfapT`w2=i zdrIXL$<3#g=MlRXP_aaG&CNtG91*?W#IV?Riv6hL`%WpCmgGKQ;vgQRY6vOm*ghpA zb4v~rVdiX~Vhf1UaVTPaDb|#_;vXU>21d{$}SC@#FU6*OB+sWSesV1aB6$o1o%uLZ+QlW@H!J&JWLISi4O`UU(4U# zmFlKpgOLvE&A8Q**wcn{>;_3vu3VAF8%(?rWcLE%q5lcnPVL} z4R^^DaRXI~_@vDIRq^pV(`jZdpj|6};KRTLe`HZDe`mMEH1{iMPv?&M6^E$2*vO zaU%Uux^Glm2Cm~>qK|iLIJQEb>yi<5%vUlZ342t-mZd#T+q1SaXA8O;pF@ z8a4$>f{uKuV*7=XTADZT7~U(;-X}cNg`K+SI&)Gr6h=1>r4N|+AU;GwvXtg;;oCaCW8%B`UPIt8t1Qy< zj$5)QxqbCiM>#)R$9}CQ>xQCL(xrZ2;)inVwp!(~vRRuWc+$jE_;FYxhn-xd#BM-s zM9Qww>rJn$xCajgO!B4}A+U&95bPy_86wEvfV!QC^bjMfAXI#)iUPwH z8^Ug)8#-aw`>+-J2w<2&AHcmh7>mjMg0nF^kDo)D}QgFUf%yz|NQA|A^Q&EtvZX%6z(hxd?2$$J?1Fn4`~*&bsKj&gPaJIVFW zInVqnovStc0xv|t@20J2p*=o$6YmEW@Zn_w<)1t7o@wA*SCce}$mkmJ3Q?oopVXhj zr?bsez-Ker7++t=WLx<9awgl#*Vi%&_-0x%MW((lZ~3j_N6+9V8mf3^Io3`}6}%*_ zLWZ)L!Ujx}z0(xSNp2vE-8f6>Ji@rY;<_gM8o%M&B%+r%_FMdpzklP1!I8h?pZGU= F{txge@+ANO literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/out/GUI/PrivateChatWindow.class b/pitiupi.testSocket/out/GUI/PrivateChatWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..9415b28fc76579583a04a7ed31527a4607367a82 GIT binary patch literal 2281 zcma)7Yg5}s6g}$z0wG?8B)lOBA+~|IZPGT4)3n$%38_qI?2yv*k;Ps>AWN>a=F$G3 zeoiMfoiNiM(CKgL^scOc7#yY_q?LB>>)d#xTGum9xhT*TZ1mYe1o!V2GbVx5^!1YnTdA zr7f$~3~hPtQ*h%*D-RzqBwN~!ROji& z4iSms>cmG3-BifwkZ?M2@vec7@d-mu*%QRUg7AHUaccHVflbA~lJKQsS13x=xrfg* z+&7TH14?EK8FDM#?4cBkp2rUfL?ZbztK%WQ(D0>!MPwN!F621r_`;!7wkKX@RXM+U zSGFL){6SgNRI}(aJ7XK>I0jISIn>F zpXC`wS{YL^lzkK58d%47L^g_%Ar}U7)^i{nVMW-pk)6`E=kD_jTLcu2;d=u=;77`s zN<6WK>?e{G?)~=;k(1%ldQ2(hwwzm`-1nK5BUb9w4dIoPOCpFGQO$uvRl3^5a59O4 zUZuE*r$x!jy9Hhg^@eO--Kg-Hi24k5#Z;s#qBAA0=1X8mFS>QFES4=YMXE}TBuAmX2f+Q1s zlg6U!Q4e%iqksQI85AltJwE16#TNdI>AJi1S|(Dk^Cdi^SURkUsQCXsY`VNyH`+U) z9^(%uHS^N^Q~11+GyMI_b)x$*yiw`f8)^ zZu~^=SM)ch?pj*AQ}cg-rRI*Hy{2CVPVe5}Xn+(4p<{?tH&6~0Ux99DlDT_~p7nU& z5e5qLskbDA28NF@zJ83!_4dw7N0>gsjg^J@24-K(EyQWPed=K}2x*wCkCN&*X6Z_q z$29H)fm3gV-X!^ok+)l^_=gSLF;j2A<{J34fzN-#kQt9PkpB~3|Bi3e_KVk~210xp zIZ{(lX3<6On-ugc?a$Lmg6`lXhLOS;tv4tWvsgfdq%_2yYsmHY#}s+P2qtJ%5wxco nczFt-Bk(jziQ1yW7`9>2YS6Ajdpp>rr%pRM?d;(IzhLA)kyBxD literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/out/GUI/PublicChatWindow.class b/pitiupi.testSocket/out/GUI/PublicChatWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..01f559275508d01cfa755155a7d194add83af3be GIT binary patch literal 3719 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 literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/out/net/TestChatMessage.class b/pitiupi.testSocket/out/net/TestChatMessage.class new file mode 100644 index 0000000000000000000000000000000000000000..02c09f3b8af1ca738669134b7f69292afea44387 GIT binary patch literal 747 zcmbVJ+fKqj5ItK96)cKeRJ`*B^}+{ed@+(3(HDvDRX4as+6Ic>rHPG+4}O3jWjuos z6?rmE=5%(>IWs%^_Wtq;;0T*pSeSBPyGS9eP>f7$29aq5I&Pfme&6qCh4j7&Onjg) zRjXfQFpZ3Ztcw}AR0y-J`|;t8ACDAv5Oygnv~K--zj5aWoyK|GGeKuhsJN!{2);i(R!X;%s*7iB3p-LFYbYJVO7cT&Glun)s)PC3^yfj%2_FLkf&U*7S= z>FD@uc!N@{{?}h2MZ$4JDY5-yYK1IMMr+8PhlAdgZW=KyjcsXHc7rPKY4I&=MlO_p zmMmw8+{zHS1Y#QOiv`9-W=--^#AWXp%G*ldc-skb-cEwNSFsZmA6Zpc5)QSXyG@@A za+u{;WS0u^Lr-xQ&o!bVro{7GE@kkE6a~wSzo}1f9$5bD^hqrsy}3%kv&LM%YEz+d(ym0Y9-EYFF@dZ5 zvQ2u26O$UY2y8GN+jE_Q4@(E{1?fhy8QTrnDC1SY@VQnRKYH zB_uJaK)2|)75fMxX_b*`0(aJesqA@XDK%l17$=(rXE`?AQ1JaahA_-1R&Bc0g5gPl zegB8Q45!<598{coTv>D$WQ~@}z#TdcV}zlZmEO2x&P#71JtnZNFR_ySD&du5hUZQk z(Qs79F&t-^`5mOhGF%Sl^Dg5r&`Fgei=#%7{F6cIf;JoXT;^{$;b$||gro8voX~L> zvJ4|tWb)GXtcNY>s)7zde!GTxq8PQFW2R>K4fv^HjroHu1jWxW%VIIZDc9aFfkVG@lmmOWYI0CFmv1?vNw zmXjiL+oRvoC^AsvxL?N^6{si!71nhxr`&@&9)dxCi^ja9o2IHnZ;o%AR<_6FTzBb& z)H@r6iM$4><6+EJooM924lOBG1)D@$Y30PR1h)GA6FRc!$-}N|EN1LdCG;hVIn1lM zQxND-T}cep#j2QKFgE~-C@H`renVE}>LmP*Dx$2z17}B+ATt!IbJz?j=abScvyj-oVP%J^w$$cD z(-$K#$+Bqb?yz#|2G7cj+|)RU>RUz+k5ocgQM+m;tDV=_1}d!_ZH^rbl61i-%e>ks zNxNQe%OYZXbd7t4IiE91epEEPEwE;qqboY@R9sUYwN$9Os$bASl`!_yh~s!=&oxRp z$*|?i5q!We^AXo|+_Ss=rg)jOTJ|8+N`R%e%6UGhZnUuO18{2L5`sg+RtmxpVk>8@tM-4uBqFNA^_y4FT=*ChLYLH9D&PtmW9x#Ti7PxTL6 z#MWQ1qkmut*VbI!KnRfJI)HW9LpKKzM~Vv1;KfjF+>a&@Sw>>&BKn(2+(fyTPza?{ z>RwBo-O2tX4CInOV+T#{t(jcsAK%6(@2ANj!d}L{5WJgUm9$O;BmU+ZOx>5kD?|i` zDEtau4Iz7}uAL`6NtziL^?`eqa9a%-7);aPo#^J(Ti~@z8az;g1qL%Tc!H4E@kVHH zmgba${WR6RghTzmBAr}9M*S@zce?$D+)ucNWTt<^1Hcky+I}Du*n}9T^BTXzg1C=j zBTjPn6fa$O^O`t;Hz~*Ro6>wqUKc~7-_hh+o*h`m+*JQXoXstxIK`Ygqjc6C>WFpx ziNq)9igo;f#87*z{lfR?8EPk!So;zlB@1zZwmWHM4;I4b`H;;{Itkp%-D&jVeqM#o zuqF&jK1c=+F-bE%vmI#r8%Ygw8jAlC%l}_`G`z(P2r|}5@*OH#gLm;BpAnM(kbm#v PbN-6*?F)Q`ZxH(ra<@wu literal 0 HcmV?d00001 diff --git a/pitiupi.testSocket/src/GUI/ChatMenu.java b/pitiupi.testSocket/src/GUI/ChatMenu.java new file mode 100644 index 0000000..9b7e0e2 --- /dev/null +++ b/pitiupi.testSocket/src/GUI/ChatMenu.java @@ -0,0 +1,84 @@ +package GUI; + +import plugin.TestChat; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.List; + +public class ChatMenu extends JMenu { + private final TestChat testChat; + + public ChatMenu(TestChat testChat) { + this.testChat = testChat; + this.setText("MP-Chat"); + + JMenuItem startPrivateChat = new JMenuItem("start Private Chat"); + startPrivateChat.addActionListener(_ -> showPrivateChatDialog()); + this.add(startPrivateChat); + } + + public void newMenuItem(JMenuItem newMenuItem, ChatWindow chatWindow) { + newMenuItem.addActionListener(_ -> chatWindow.setVisible(true)); + + this.add(newMenuItem); + } + + public void removeMenuItem(JMenuItem removeMenuItem) { + this.remove(removeMenuItem); + } + + private void showPrivateChatDialog() { + JDialog dialog = new JDialog( + SwingUtilities.getWindowAncestor(this), + "Novo chat privado", + Dialog.ModalityType.APPLICATION_MODAL + ); + + JTextField ipField = new JTextField(); + + JButton startButton = new JButton("Iniciar"); + JButton cancelButton = new JButton("Cancelar"); + + JPanel contentPanel = new JPanel(new BorderLayout(10, 10)); + contentPanel.setBorder( + BorderFactory.createEmptyBorder(10, 10, 10, 10) + ); + + JPanel ipPanel = new JPanel(new BorderLayout(5, 5)); + ipPanel.add(new JLabel("IP:"), BorderLayout.WEST); + ipPanel.add(ipField, BorderLayout.CENTER); + + JPanel buttonsPanel = new JPanel( + new FlowLayout(FlowLayout.RIGHT) + ); + + buttonsPanel.add(cancelButton); + buttonsPanel.add(startButton); + + JLabel errorLabel = new JLabel("Não foi possível estabelecer a conexão."); + errorLabel.setForeground(Color.RED); + errorLabel.setVisible(false); + + contentPanel.add(errorLabel, BorderLayout.NORTH); + contentPanel.add(ipPanel, BorderLayout.CENTER); + contentPanel.add(buttonsPanel, BorderLayout.SOUTH); + + cancelButton.addActionListener(e -> dialog.dispose()); + + startButton.addActionListener(e -> { + String ip = ipField.getText(); + + if (testChat.openConnection(ip)) dialog.dispose(); + else errorLabel.setVisible(true); + + }); + + dialog.setContentPane(contentPanel); + dialog.pack(); + dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(this)); + dialog.setVisible(true); + } +} diff --git a/pitiupi.testSocket/src/GUI/ChatWindow.java b/pitiupi.testSocket/src/GUI/ChatWindow.java new file mode 100644 index 0000000..9e9a0f6 --- /dev/null +++ b/pitiupi.testSocket/src/GUI/ChatWindow.java @@ -0,0 +1,94 @@ +package GUI; + +import net.TestChatMessage; +import pitiupi.GUI.MainWindow; + +import javax.swing.*; +import java.awt.*; +import java.net.InetAddress; +import java.net.UnknownHostException; + +public abstract class ChatWindow extends JFrame { + + protected final MainWindow mainWindow; + + private JTextArea receivedMessagesArea; + protected JTextField messageField; + + public ChatWindow(MainWindow mainWindow) { + this.mainWindow = mainWindow; + initComponents(); + } + + private void initComponents() { + setTitle("Socket Test"); + setSize(700, 500); + setLocationRelativeTo(null); + setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); + + JPanel mainPanel = new JPanel(new BorderLayout(10, 10)); + + mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + + initReceivedMessagesPanel(mainPanel); + initBottomPanel(mainPanel); + + setContentPane(mainPanel); + } + + private void initReceivedMessagesPanel(JPanel mainPanel) { + receivedMessagesArea = new JTextArea(); + receivedMessagesArea.setEditable(false); + receivedMessagesArea.setLineWrap(true); + receivedMessagesArea.setWrapStyleWord(true); + + JScrollPane messagesScrollPane = new JScrollPane(receivedMessagesArea); + + messagesScrollPane.setBorder(BorderFactory.createTitledBorder("Mensagens recebidas")); + + mainPanel.add(messagesScrollPane, BorderLayout.CENTER); + } + + private void initBottomPanel(JPanel mainPanel) { + messageField = new JTextField(); + + JPanel bottomPanel = new JPanel(new BorderLayout(10, 10)); + + bottomPanel.add(messageField, BorderLayout.CENTER); + + initButtons(bottomPanel); + + mainPanel.add(bottomPanel, BorderLayout.SOUTH); + } + + protected abstract void initButtons(JPanel bottomPanel); + + protected TestChatMessage createMessage(String tipoMensagem) { + try { + String nome = mainWindow.getUserName(); + String ip = InetAddress.getLocalHost().getHostAddress(); + String message = messageField.getText(); + + return new TestChatMessage(nome, ip, tipoMensagem, message); + + } catch (UnknownHostException e) { + throw new RuntimeException(e); + } + } + + public void receiveMessage(TestChatMessage msg) { + SwingUtilities.invokeLater(() -> { + String mensagem = String.format( + "[%s] %s (%s): %s%n", + msg.getTipoMensagem(), + msg.getNome(), + msg.getIp(), + msg.getMessage() + ); + + receivedMessagesArea.append(mensagem); + + receivedMessagesArea.setCaretPosition(receivedMessagesArea.getDocument().getLength()); + }); + } +} \ No newline at end of file diff --git a/pitiupi.testSocket/src/GUI/PrivateChatWindow.java b/pitiupi.testSocket/src/GUI/PrivateChatWindow.java new file mode 100644 index 0000000..8b809a9 --- /dev/null +++ b/pitiupi.testSocket/src/GUI/PrivateChatWindow.java @@ -0,0 +1,46 @@ +package GUI; + +import net.TestChatMessage; +import pitiupi.GUI.MainWindow; +import pitiupi.net.tcp.TcpConnection; + +import javax.swing.*; +import java.awt.*; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class PrivateChatWindow extends ChatWindow { + + private final TcpConnection connection; + + public PrivateChatWindow(MainWindow mainWindow, TcpConnection connection) { + this.connection = connection; + + super(mainWindow); + } + + @Override + protected void initButtons(JPanel bottomPanel) { + JButton tcpButton = new JButton("TCP"); + + tcpButton.addActionListener(e -> sendTCP()); + + JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); + + buttonsPanel.add(tcpButton); + + bottomPanel.add(buttonsPanel, BorderLayout.EAST); + } + + private void sendTCP() { + try { + TestChatMessage msg = createMessage("TCP Private"); + connection.send(msg.toByteArray()); + + } catch (Exception ex) { + Logger.getLogger( + PrivateChatWindow.class.getName() + ).log(Level.SEVERE, null, ex); + } + } +} \ No newline at end of file diff --git a/pitiupi.testSocket/src/GUI/PublicChatWindow.java b/pitiupi.testSocket/src/GUI/PublicChatWindow.java new file mode 100644 index 0000000..4c9e945 --- /dev/null +++ b/pitiupi.testSocket/src/GUI/PublicChatWindow.java @@ -0,0 +1,93 @@ +package GUI; + +import net.TestChatMessage; +import pitiupi.GUI.MainWindow; + +import javax.swing.*; +import java.awt.*; +import java.net.InetAddress; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class PublicChatWindow extends ChatWindow { + + private JTextField ipField; + + public PublicChatWindow(MainWindow mainWindow) { + super(mainWindow); + } + + @Override + protected void initButtons(JPanel bottomPanel) { + initIpField(bottomPanel); + initCommunicationButtons(bottomPanel); + } + + private void initIpField(JPanel bottomPanel) { + ipField = new JTextField(); + ipField.setPreferredSize(new Dimension(130, 30)); + + JPanel ipPanel = new JPanel(new BorderLayout(5, 5)); + + ipPanel.add(new JLabel("IP destino:"), BorderLayout.WEST); + + ipPanel.add(ipField, BorderLayout.CENTER); + + bottomPanel.add(ipPanel, BorderLayout.WEST); + } + + private void initCommunicationButtons(JPanel bottomPanel) { + JButton tcpButton = new JButton("TCP"); + JButton udpButton = new JButton("UDP"); + JButton multicastButton = new JButton("Multicast"); + + tcpButton.addActionListener(e -> sendTCP()); + udpButton.addActionListener(e -> sendUDP()); + multicastButton.addActionListener(e -> sendMulticast()); + + JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); + + buttonsPanel.add(tcpButton); + buttonsPanel.add(udpButton); + buttonsPanel.add(multicastButton); + + bottomPanel.add(buttonsPanel, BorderLayout.EAST); + } + + private void sendTCP() { + try { + TestChatMessage msg = createMessage("TCP Unicast"); + + InetAddress ip = InetAddress.getByName(ipField.getText()); + + mainWindow.getSocketTCP().send(msg, ip); + + } catch (Exception ex) { + Logger.getLogger(PublicChatWindow.class.getName()).log(Level.SEVERE, null, ex); + } + } + + private void sendUDP() { + try { + TestChatMessage msg = createMessage("UDP Unicast"); + + InetAddress ip = InetAddress.getByName(ipField.getText()); + + mainWindow.getSocketUDP().sendUnicast(msg, ip); + + } catch (Exception ex) { + Logger.getLogger(PublicChatWindow.class.getName()).log(Level.SEVERE, null, ex); + } + } + + private void sendMulticast() { + try { + TestChatMessage msg = createMessage("UDP Multicast"); + + mainWindow.getSocketUDP().sendMulticast(msg); + + } catch (Exception ex) { + Logger.getLogger(PublicChatWindow.class.getName()).log(Level.SEVERE, null, ex); + } + } +} \ No newline at end of file diff --git a/pitiupi.testSocket/src/GUI/SocketTestMenu.java b/pitiupi.testSocket/src/GUI/SocketTestMenu.java deleted file mode 100644 index 0f04bf9..0000000 --- a/pitiupi.testSocket/src/GUI/SocketTestMenu.java +++ /dev/null @@ -1,21 +0,0 @@ -package GUI; - -import javax.swing.*; -import java.awt.event.ActionEvent; - -public class SocketTestMenu extends JMenu { - private final SocketTestWindow socketTestWindow; - - public SocketTestMenu(SocketTestWindow socketTestWindow) { - this.socketTestWindow = socketTestWindow; - this.setText("MP-Chat"); - JMenuItem menuItem = new JMenuItem(); - menuItem.setText("Show Chat Window"); - menuItem.addActionListener(this::showTestWindow); - this.add(menuItem); - } - - private void showTestWindow(ActionEvent ae) { - this.socketTestWindow.setVisible(true); - } -} diff --git a/pitiupi.testSocket/src/GUI/SocketTestWindow.java b/pitiupi.testSocket/src/GUI/SocketTestWindow.java deleted file mode 100644 index e4d70d0..0000000 --- a/pitiupi.testSocket/src/GUI/SocketTestWindow.java +++ /dev/null @@ -1,151 +0,0 @@ -package GUI; - -import net.TestMessage; -import pitiupi.GUI.MainWindow; - -import javax.swing.*; -import java.awt.*; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class SocketTestWindow extends JFrame { - private MainWindow mainWindow; - private JTextArea receivedMessagesArea; - - private JTextField ipField; - private JTextField messageField; - - private JButton tcpButton; - private JButton udpButton; - private JButton multicastButton; - - public SocketTestWindow(MainWindow mainWindow) { - this.mainWindow = mainWindow; - initComponents(); - } - - public void initComponents() { - setTitle("Socket Test"); - setSize(700, 500); - setLocationRelativeTo(null); - setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); - - JPanel mainPanel = new JPanel(new BorderLayout(10, 10)); - - mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - - initReceivedMessagesPanel(mainPanel); - initBottomPanel(mainPanel); - - setContentPane(mainPanel); - } - - private void initReceivedMessagesPanel(JPanel mainPanel) { - receivedMessagesArea = new JTextArea(); - receivedMessagesArea.setEditable(false); - receivedMessagesArea.setLineWrap(true); - receivedMessagesArea.setWrapStyleWord(true); - - JScrollPane messagesScrollPane = new JScrollPane(receivedMessagesArea); - - messagesScrollPane.setBorder(BorderFactory.createTitledBorder("Mensagens recebidas")); - - mainPanel.add(messagesScrollPane, BorderLayout.CENTER); - } - - private void initBottomPanel(JPanel mainPanel) { - ipField = new JTextField(); - ipField.setPreferredSize(new Dimension(130, 30)); - - JPanel ipPanel = new JPanel(new BorderLayout(5, 5)); - ipPanel.add(new JLabel("IP destino:"), BorderLayout.WEST); - ipPanel.add(ipField, BorderLayout.CENTER); - - messageField = new JTextField(); - - JPanel bottomPanel = new JPanel(new BorderLayout(10, 10)); - - bottomPanel.add(ipPanel, BorderLayout.WEST); - bottomPanel.add(messageField, BorderLayout.CENTER); - initButtons(bottomPanel); - - mainPanel.add(bottomPanel, BorderLayout.SOUTH); - } - - private void initButtons(JPanel bottomPanel) { - tcpButton = new JButton("TCP"); - udpButton = new JButton("UDP"); - multicastButton = new JButton("Multicast"); - - tcpButton.addActionListener(e -> sendTCP()); - udpButton.addActionListener(e -> sendUDP()); - multicastButton.addActionListener(e -> sendMulticast()); - - JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 5, 0)); - - buttonsPanel.add(tcpButton); - buttonsPanel.add(udpButton); - buttonsPanel.add(multicastButton); - - bottomPanel.add(buttonsPanel, BorderLayout.EAST); - } - - public void sendTCP() { - try { - TestMessage msg = createMessage("TCP Unicast"); - InetAddress ip = InetAddress.getByName(ipField.getText()); - mainWindow.getSocketTCP().send(msg, ip); - } catch (Exception ex) { - Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); - } - - } - public void sendUDP() { - try { - TestMessage msg = createMessage("UDP Unicast"); - InetAddress ip = InetAddress.getByName(ipField.getText()); - mainWindow.getSocketUDP().sendUnicast(msg, ip); - } catch (Exception ex) { - Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); - } - } - public void sendMulticast() { - try { - TestMessage msg = createMessage("UDP Multicast"); - mainWindow.getSocketUDP().sendMulticast(msg); - } catch (Exception ex) { - Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex); - } - } - - private TestMessage createMessage(String tipoMensagem) { - try { - String nome = mainWindow.getUserName(); - String ip = InetAddress.getLocalHost().getHostAddress(); - String message = messageField.getText(); - return new TestMessage(nome, ip, tipoMensagem, message); - } catch (UnknownHostException e) { - throw new RuntimeException(e); - } - } - - public void receiveMessage(TestMessage msg) { - SwingUtilities.invokeLater(() -> { - String mensagem = String.format( - "[%s] %s (%s): %s%n", - msg.getTipoMensagem(), - msg.getNome(), - msg.getIp(), - msg.getMessage() - ); - - receivedMessagesArea.append(mensagem); - - receivedMessagesArea.setCaretPosition( - receivedMessagesArea.getDocument().getLength() - ); - }); - } -} diff --git a/pitiupi.testSocket/src/META-INF/services/pitiupi.plugin.Plugin b/pitiupi.testSocket/src/META-INF/services/pitiupi.plugin.Plugin index cdf4196..58a4118 100644 --- a/pitiupi.testSocket/src/META-INF/services/pitiupi.plugin.Plugin +++ b/pitiupi.testSocket/src/META-INF/services/pitiupi.plugin.Plugin @@ -1 +1 @@ -plugin.SocketTest +plugin.TestChat diff --git a/pitiupi.testSocket/src/control/ChatController.java b/pitiupi.testSocket/src/control/ChatController.java new file mode 100644 index 0000000..96a3361 --- /dev/null +++ b/pitiupi.testSocket/src/control/ChatController.java @@ -0,0 +1,62 @@ +package control; + +import GUI.ChatMenu; +import GUI.ChatWindow; +import GUI.PrivateChatWindow; +import GUI.PublicChatWindow; +import net.TestChatMessage; +import pitiupi.GUI.MainWindow; +import pitiupi.net.tcp.TcpConnection; + +import javax.swing.*; +import java.util.HashMap; + +public class ChatController { + MainWindow mainWindow; + ChatMenu chatMenu; + + PublicChatWindow publicChatWindow; + + private final HashMap chatMenus; + private final HashMap chatWindows; + + + public ChatController(MainWindow mainWindow, ChatMenu chatMenu) { + this.mainWindow = mainWindow; + publicChatWindow = new PublicChatWindow(mainWindow); + + chatMenus = new HashMap<>(); + chatWindows = new HashMap<>(); + + chatMenu.newMenuItem(new JMenuItem("Show global chat"), publicChatWindow); + } + + public void addChatWindow(TcpConnection tcpConnection) { + if (chatWindows.containsKey(tcpConnection)) return; + + PrivateChatWindow newChat = new PrivateChatWindow(mainWindow, tcpConnection); + chatWindows.put(tcpConnection, newChat); + + JMenuItem newMenuItem = new JMenuItem(); + chatMenus.put(tcpConnection, newMenuItem); + + newMenuItem.setText(tcpConnection.getAddress().toString()); + chatMenu.newMenuItem(newMenuItem, newChat); + } + + public void removeChatWindow(TcpConnection tcpConnection) { + ChatWindow removedWindow = chatWindows.remove(tcpConnection); + JMenuItem removedMenu = chatMenus.remove(tcpConnection); + + chatMenu.removeMenuItem(removedMenu); + removedWindow.setVisible(false); + removedWindow.dispose(); + } + + public void receivePublic(TestChatMessage message) { + publicChatWindow.receiveMessage(message); + } + public void receivePrivate(TcpConnection tcpConnection, TestChatMessage message) { + chatWindows.get(tcpConnection).receiveMessage(message); + } +} diff --git a/pitiupi.testSocket/src/net/TestMessage.java b/pitiupi.testSocket/src/net/TestChatMessage.java similarity index 76% rename from pitiupi.testSocket/src/net/TestMessage.java rename to pitiupi.testSocket/src/net/TestChatMessage.java index cb947d4..3b9a499 100644 --- a/pitiupi.testSocket/src/net/TestMessage.java +++ b/pitiupi.testSocket/src/net/TestChatMessage.java @@ -2,20 +2,20 @@ package net; import pitiupi.net.Message; -public class TestMessage extends Message { +public class TestChatMessage extends Message { private String nome; private String ip; private String tipoMensagem; private String message; - public TestMessage(String nome, String ip, String tipoMensagem, String message) { + public TestChatMessage(String nome, String ip, String tipoMensagem, String message) { this.nome = nome; this.ip = ip; this.tipoMensagem = tipoMensagem; this.message = message; } - public TestMessage(){} + public TestChatMessage(){} public String getNome() { return nome; diff --git a/pitiupi.testSocket/src/plugin/SocketTest.java b/pitiupi.testSocket/src/plugin/SocketTest.java deleted file mode 100644 index 145dbca..0000000 --- a/pitiupi.testSocket/src/plugin/SocketTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package plugin; - -import GUI.SocketTestMenu; -import GUI.SocketTestWindow; -import net.TestMessage; -import pitiupi.GUI.MainWindow; -import pitiupi.net.Message; -import pitiupi.net.tcp.TcpConnection; -import pitiupi.plugin.PrivateConnectionPlugin; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.ObjectInputStream; - -public class SocketTest implements PrivateConnectionPlugin{ - SocketTestWindow socketTestWindow; - - @Override - public String getName() { - return "Test Socket"; - } - - @Override - public String getAuthor() { - return "Gustavo Henrique"; - } - - @Override - public String getVersion() { - return "0"; - } - - @Override - public String getIdentifier() { - return "Socket.Test.123456"; - } - - @Override - public void createPlugin(MainWindow mainWindow) { - this.socketTestWindow = new SocketTestWindow(mainWindow); - mainWindow.addMenu(new SocketTestMenu(socketTestWindow)); - } - - @Override - public Message getMessage() { - return new TestMessage(); - } - - @Override - public void receiveMessage(byte[] message) { - ByteArrayInputStream bis = new ByteArrayInputStream(message); - ObjectInputStream ois; - try { - ois = new ObjectInputStream(bis); - if (ois.readObject() instanceof TestMessage msg) { - this.socketTestWindow.receiveMessage(msg); - } - } catch (IOException | ClassNotFoundException ex) { - System.out.println(ex.toString()); - } - } - - @Override - public void receivePrivateConnection(TcpConnection tcpConnection) { - - } - - @Override - public void receiveBytes(TcpConnection connection, byte[] bytes) { - - } - - @Override - public void onSocketClosed(TcpConnection tcpConnection) { - - } -} diff --git a/pitiupi.testSocket/src/plugin/TestChat.java b/pitiupi.testSocket/src/plugin/TestChat.java new file mode 100644 index 0000000..de25242 --- /dev/null +++ b/pitiupi.testSocket/src/plugin/TestChat.java @@ -0,0 +1,100 @@ +package plugin; + +import GUI.ChatMenu; +import control.ChatController; +import net.TestChatMessage; +import pitiupi.GUI.MainWindow; +import pitiupi.net.Message; +import pitiupi.net.tcp.TcpConnection; +import pitiupi.plugin.PrivateConnectionPlugin; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.net.InetAddress; + +public class TestChat implements PrivateConnectionPlugin{ + ChatController chatController; + MainWindow mainWindow; + + @Override + public String getName() { + return "MultiProtocol chat"; + } + + @Override + public String getAuthor() { + return "Gustavo Henrique"; + } + + @Override + public String getVersion() { + return "0"; + } + + @Override + public String getIdentifier() { + return "Multi.Protocol.Chat.Pitiupi"; + } + + @Override + public void createPlugin(MainWindow mainWindow) { + this.mainWindow = mainWindow; + + ChatMenu chatMenu = new ChatMenu(this); + chatController = new ChatController(mainWindow, chatMenu); + mainWindow.addMenu(chatMenu); + } + + @Override + public Message getMessage() { + return new TestChatMessage(); + } + + @Override + public void receiveMessage(byte[] message) { + TestChatMessage testChatMessage = parseMessage(message); + chatController.receivePublic(testChatMessage); + } + + @Override + public void receivePrivateConnection(TcpConnection tcpConnection) { + chatController.addChatWindow(tcpConnection); + } + + @Override + public void receiveBytes(TcpConnection connection, byte[] bytes) { + TestChatMessage testChatMessage = parseMessage(bytes); + chatController.receivePrivate(connection, testChatMessage); + } + + @Override + public void onSocketClosed(TcpConnection tcpConnection) { + chatController.removeChatWindow(tcpConnection); + } + + public boolean openConnection(String ip) { + try { + mainWindow.getSocketTCP().createPrivateConnection(InetAddress.getByName(ip), getIdentifier(), getIdentifier()); + return true; + } + catch (Exception e) { + System.out.println("Error opening connection: " + e.getMessage()); + } + return false; + } + + private TestChatMessage parseMessage(byte[] bytes) { + ByteArrayInputStream bis = new ByteArrayInputStream(bytes); + ObjectInputStream ois; + try { + ois = new ObjectInputStream(bis); + if (ois.readObject() instanceof TestChatMessage msg) { + return msg; + } + } catch (IOException | ClassNotFoundException ex) { + System.out.println(ex.toString()); + } + return null; + } +} diff --git a/pitiupi/src/pitiupi/GUI/Login.java b/pitiupi/src/pitiupi/GUI/Login.java index 20b2a37..893161d 100644 --- a/pitiupi/src/pitiupi/GUI/Login.java +++ b/pitiupi/src/pitiupi/GUI/Login.java @@ -48,7 +48,6 @@ public final class Login extends JDialog { public void initComponents() { this.setTitle("Login"); - String nomeSalvo = prefs.get(PREF_NOME, System.getProperty("user.name")); int portaSalva = prefs.getInt(PREF_PORTA, 8000); From fa4ee046b1636c5fd7a8b3511f5c9a0d17a89347 Mon Sep 17 00:00:00 2001 From: GustavoHMDS Date: Tue, 29 Sep 2026 01:13:42 -0300 Subject: [PATCH 6/7] WIP BugFix 3 --- pitiupi/plugins/pitiupi.chat.jar | Bin 13212 -> 0 bytes pitiupi/plugins/pitiupi.screenCast.jar | Bin 18071 -> 0 bytes .../pitiupi/net/tcp/ConnectionFactory.java | 25 ++++-------------- pitiupi/src/pitiupi/net/tcp/SocketTCP.java | 16 +++++------ pitiupi/src/pitiupi/net/udp/SocketUDP.java | 1 - 5 files changed, 11 insertions(+), 31 deletions(-) delete mode 120000 pitiupi/plugins/pitiupi.chat.jar delete mode 120000 pitiupi/plugins/pitiupi.screenCast.jar diff --git a/pitiupi/plugins/pitiupi.chat.jar b/pitiupi/plugins/pitiupi.chat.jar deleted file mode 120000 index 743d428bcc5c1e18587cab29dc9096ff3a16ea3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13212 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 Yi5(KyEGcC_1Q%6Jn^5a|u8Z&f2hm5SivR!s diff --git a/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java b/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java index cb6943a..33488fd 100644 --- a/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java +++ b/pitiupi/src/pitiupi/net/tcp/ConnectionFactory.java @@ -62,16 +62,10 @@ public class ConnectionFactory { HandshakeMessage handshake = new HandshakeMessage(isPrivate, sender, receiver); connection.send(handshake.toByteArray()); - System.out.println("Enviou handhsake"); HandshakeMessage handshakeResponse = validateConnection(connection); - System.out.println("Recebeu resposta"); - if (handshakeResponse == null) { - System.out.println("Conexao falhou"); - return null; - } + if (handshakeResponse == null) return null; - System.out.println("Sucesso na conexao"); connection.setTimeout(STANDARD_TIMEOUT); return connection; @@ -106,10 +100,8 @@ public class ConnectionFactory { HandshakeMessage handshake = validateConnection(connection); - if (handshake == null) { - System.out.println("Conexao falhou"); - return null; - } + if (handshake == null) return null; + connection.send(handshake.createResponse().toByteArray()); @@ -119,7 +111,6 @@ public class ConnectionFactory { connection.setTimeout(STANDARD_TIMEOUT); - System.out.println("Sucesso na conexao"); return connection; } catch (IOException ex) { @@ -161,13 +152,10 @@ public class ConnectionFactory { if (object instanceof Message message) { SysInfoMessage sysInfo = SysInfoMessage.parseSystemInfo(bytes); - if (sysInfo != null) { - System.out.println(sysInfo.getMessage()); - return null; - } + if (sysInfo != null) return null; + if (message instanceof HandshakeMessage handshake) { - System.out.println("Recebeu handshake"); return (validateHandshake(handshake, connection)) ? handshake : null; } } @@ -222,7 +210,6 @@ public class ConnectionFactory { SysInfoType.CONNECTION_REJECTED, "Invalid Sender: " + sender + "." ); - System.out.println("Handshake invalido"); return false; } if (receiver == null || receiver.isBlank()) { @@ -231,11 +218,9 @@ public class ConnectionFactory { SysInfoType.CONNECTION_REJECTED, "Invalid Receiver: " + receiver + "." ); - System.out.println("Handshake invalido"); return false; } - System.out.println("Handshake valido"); return true; } } diff --git a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java index 46982c4..abf36c2 100644 --- a/pitiupi/src/pitiupi/net/tcp/SocketTCP.java +++ b/pitiupi/src/pitiupi/net/tcp/SocketTCP.java @@ -135,7 +135,6 @@ public class SocketTCP extends Thread { connection = connectionManager.getPublicConnection(destinationAddress); if (connection != null && !connection.isClosed()) return connection; - System.out.println("Trying to Establish TCP connection."); connection = establishOutgoingConnection(destinationAddress, senderId, receiverId, false); @@ -195,7 +194,7 @@ public class SocketTCP extends Thread { saveConnection(connection); connectionExecutor.submit(() -> { - startReceiver(connection, false); + startReceiver(connection); }); return connection; @@ -212,12 +211,11 @@ public class SocketTCP extends Thread { */ private void acceptIncomingConnection(Socket socket) { connectionExecutor.submit(() -> { - System.out.println("Accepted TCP connection."); TcpConnection connection = ConnectionFactory.receiveConnection(socket); if (connection == null) return; saveConnection(connection); - startReceiver(connection, true); + startReceiver(connection); }); } @@ -248,10 +246,9 @@ public class SocketTCP extends Thread { * estabelecimento da conexão.

* * @param connection conexão cujo fluxo de entrada será processado. - * @param notify indica se o plugin destinatário deve ser notificado sobre - * o recebimento de uma nova conexão privada. */ - private void startReceiver(TcpConnection connection, boolean notify) { + private void startReceiver(TcpConnection connection) { + if (!connection.isPrivate()) { publicConnectionReceiver(connection); return; @@ -264,9 +261,8 @@ public class SocketTCP extends Thread { Plugin receiver = findConnectionReceiver(connection); if (receiver instanceof PrivateConnectionPlugin plugin) { - if (notify) { - plugin.receivePrivateConnection(connection); - } + plugin.receivePrivateConnection(connection); + privateConnectionReceiver(connection, plugin); } } diff --git a/pitiupi/src/pitiupi/net/udp/SocketUDP.java b/pitiupi/src/pitiupi/net/udp/SocketUDP.java index 0d07b29..b4c6651 100644 --- a/pitiupi/src/pitiupi/net/udp/SocketUDP.java +++ b/pitiupi/src/pitiupi/net/udp/SocketUDP.java @@ -144,7 +144,6 @@ public class SocketUDP extends Thread { } throw ex; } - System.out.println("Message! it is from: " + msgPacket.getSocketAddress()); HeartbeatMessage heartbeat = tryParseHeartbeat(msgPacket.getData()); if (heartbeat != null) { From 23559dcc06b221cbc9d4925f7911b50d503d9f46 Mon Sep 17 00:00:00 2001 From: GustavoHMDS Date: Tue, 29 Sep 2026 01:20:48 -0300 Subject: [PATCH 7/7] WIP bug fix 3 --- pitiupi.testSocket/out/GUI/ChatMenu.class | Bin 4149 -> 4300 bytes .../out/control/ChatController.class | Bin 2224 -> 2236 bytes pitiupi.testSocket/out/plugin/TestChat.class | Bin 3334 -> 3896 bytes .../src/control/ChatController.java | 7 +++---- pitiupi.testSocket/src/plugin/TestChat.java | 6 +++++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pitiupi.testSocket/out/GUI/ChatMenu.class b/pitiupi.testSocket/out/GUI/ChatMenu.class index 65067fef2ec7f61d0bed894adccec041b1c32400..77a7f11100a4f70015a092a8252c87fcb51bbb5c 100644 GIT binary patch delta 1737 zcmZWp32>8D5dL10|LEU`)G#1_ff_)xq$w%N(E|`Dhb@5?3MoNRf7;llgrqhp1w?`e zDj;4@R1^=q5Jj;qO|VtG5fByc1MwDR#u>+P#&Jf+abF0ngOkbscHi!P`@P+Lugi60 zxN-QO?)?B};$*wg#S&RK9~WrI=NJt)Lr#;m((;C_NQ1X#bu1oS!C;TJ#u*0s(w0!v zTip_h#B1U$L2E^s4i7`_wEFr`q`_6!XvJM^p-6qS%@vKfRsa3|g~<3`d+`xQJs2#)(6$Se?Kz5ye8Y<+D;zWE-4436nKU;kX!6MU8DKn=aaI zgU*_PnHpws%*G`QLq(Q-sQAq`Q7=Iyhk`kx$X>zbiZ%8jwLaK2RA*?c^2Ug3gST>e zYdju}=vY8RDk7n}kkw+K3WIelV$jR2NL?^&wP>hia7zBYfz?(d7}gLFzu0qg7voZy z?lJ}?zoKHa-+&*N%bhEP%i+qluuMZ8M?HdKj>E6}(ZJD&kl5w$7B4>&*=H>ahIPo| zS5%i8Xp(H286362SX?5vaEwGuONlni%ANbf z0kxGHbU()f*e=SoLbC)9aXbu_Ae*ha0q6V_YUZV- zg(Q_adf*TAU~wSF$T3n_lETtb#Z;swfBSG{5?7t}(e;dnYN|bG3OK_lM4X9e5?7n5 z#~G*flj$Q?&PH|~;E+*;`N6qtH9?n!F}rjo?A1QqDP0(s&j9x0$?kM~upg(?f2N7WjI zv*Csb4_%Q$`GjFQif91G(z{TE1sF&7cs$~mfVI?vEtrI@)XwenFzv)t?7=j2p`4~= z2F=z?9Hpn}7%FfQ^O5+K!hc5%{=z~AEXuLTp~|#z0X0b_3g;5ZCrTCfUTBi^u5B

4)sbV!5zgS#&?M3mp|}aI@8Bxg zf!X9s!=LfZBga!CMJYSZ^vxySbZz=@dttlIbR9rLekjfOFy5wWP+=YToHmc(9r~Y= ej`m6)_DY|S^bG~dhhzr6#rIQ9{D2eq8Row)$%nuI delta 1681 zcmZ8hYjhJ;5dLnGeRR8pvS49RN@)+0CR-v>UM&c1d8L#B1yX}nT-rzjC0mlT1qCW1 zz7h3`isD;DLBvv;V59gJMMQkz^Z4Ii{@|w`k8{%q%E>uK@R!7LqB zsOBy1kZNI$4hc8#j63L=$56zNbJnj;CiD~O1WGTg>c?&T%&DBdp>)wGkib&*&yLToqW{$`fv!VahBUzSmH2u_=* zls8Ax5v4jAd_15QQMDo#=QHF$eiB^@x^?tm3*RhTY71`HaR;{XgR*ya3wG$}#hnaV zB9aV66VY`Y)KrgmO?gPgT_i%I6Hm6QxSPzCBv88n7w!@Ba4*kOstamSY`~2NMC3uf zLg}Ku?a}ct_VRN|g=yhY9gjh#lAU(zMhzAo*Rc;z@KI`IfrTBSpZj$@jc533wJiTx zJg4A!9WUTTzDu1m)xygBqADK#SR6B7=|rc9Sqdb3^hk%ZBCB{6|d_! z+<#HE7#rv>(MGfS%y0=Gh&LbV7(`~cjE{x)iH?(ao4nJ)`%Fg)X+oY6-WNLhaGc(K zso@;HQgB|!*Z8J?XZ}dWzUTY&GS80;6Zvp`G(Vp|OjhtSLvhYkxKvOo9ieaL4Q>@w zv!lGdU}Eo^I3^jMIoum@D}{J z^ioQ95k?kC-pe^!Hd;&*F`lf$kcaSWH(7bqU&b=9!oHK3Y*Ze{^fYESWH2|JM$OU; zYQx6-G!`~ytwm&2c`^uwGguNX)C#pUmZq`1N-`zkiQh@AOo84HVN^ATkWD#*mawrl z4cl0kLYpaD#(Fw?hoI50l*UF;OEDGGlR~W7R4T-gP1{UqRjR2TMNS53}B<$B_BaCF|2m*5_n>O9^7L%)ocJFwevf_=%)6{{f&FXifkC diff --git a/pitiupi.testSocket/out/control/ChatController.class b/pitiupi.testSocket/out/control/ChatController.class index ca920e427fb677d286ac65fc5ac27d2463ef750b..b7ce85e3f4bd953cafb63c74097ef3ee3cae6379 100644 GIT binary patch delta 436 zcmYk2O-~b16o#KWQ|3=Y8{jZr zn{T(K>i=+6GA1bKKce8fObGgSk59h%N3D~O2Q5E!^%5|t=poeKM6oZXB6*~kVp`vd z9p|xPmM1!ImBqYXw2JN=&r}oDxThSmC$kS$fulcpDyY?Fq|IBC3E!$kAFPw$!85wL~UEev;Mi~Fb z4}alb6YS^4JCqH`B}7+7B50XeG9Q6KV;dq%kpjc`ctkv8ni1A0=@sc6&RmeWx@K`4(}r2RC{B3(E=}+7V#hE;Q6*(6QNnVZF(MP1IWVe3>4S~o?W@vFzEVi3<-^kDnO*fF zj&WBpL69^b>`wWlg^VeVX(Z&AmTD28Ud&>SVV+|Fi!w+v&C5tJtZ=Miji6ob&~|xG z`vU^&92*D|uP(;y93l7-R-LK77?Iy>$q=q3BilUBfBPX* A`v3p{ diff --git a/pitiupi.testSocket/out/plugin/TestChat.class b/pitiupi.testSocket/out/plugin/TestChat.class index 6cbbacaf48ce8cd9595bc426091f4cf5e6eda2aa..9c672dd8055f2d4ab67bcb894f8ed062799ce86b 100644 GIT binary patch delta 1591 zcmZux*;gB76#sqMCYcNn0!l+=Jku;B(bG0S$-xF!z3Q@9%EEZ#i4JRxSSe*ZNNY zy0Eq+9y2sLX??eZdvGsKjnfTIWew3-Hs1+H7!A&d9!mtj2tO zGpZ_&CzODQHuwbuB<#llhDseW=S$DV3DmF4K`ow$YjGvbV2`VrBco1C-j+8Q$%qTo%Xtg%rkc7kN;Z?>~ z`@;wd2uV1CUOr+RuskB65B+?_=(Z1HNWid!V;JFo7%#9$SK8aHT5)!7M@=mj#P4fkFU0V_<31-lw z=BCjOHx-*H%~7y1B}#;Ry*(;wgU9ysL77 zq3qwlp5Csxh%&9kld6Ez{D7sgC5&ezJgfI;)smErc-CoqUcy ze9rCGy6!JUT*g-dzLxL}zGbK{oQsVe_673=LW(9&$Pq1>ny1a5+WPlfQ;?V18u@u^ zfbX;w@toB`y37#J%@wAB`DumUuvV3pSn!>Q@9~3xMVLk-&W{q7ujCLYk5ytyt7gF z+)g6_UXsl;;9lz0hg!4{CW_bd$R*LWCC5Ipy@7Pzb3?4{({mKVNV1J)_tQE+zBlPP z*qD7c5vfyY_juQ_4_L!}1+v7vs~sXb3C{6WK5ehPGJAgkw2}P~Wj~A(^bq9j|FSo3 zX195+qQ;v;M}-<{akzW|#RFxG$o}W&Rm%f7awOEnbGhZ(7Ef%ap?zYJ)9O zaT}Fs#?zZRyV*`XjR}mA^#q*s^z4QV4|U&+2(=KUeVNF&Rs-WrcmyN`Xn#|zQGi3h zMKXX<%aX&OUrey$d8)Rv``mVR4^r6{pG`matF3xs=L0qe+-Pvo$>vv_!MRjn zB9oiVpS8Gy2W=i=Kz*<8_75>^@UYDzJgWZC$9;!v9%EDuc{=@Z5(bak9Oj5x^<37* zRlvK=e~bx(Nt-0c)gEte>li0&PBN-trJX{|Sz1b^ohGUEl+9^U>VkLJKf|nnWAh|w z^}DxU%cy{_y>E`EY`mP&@ZLQ&(0R-tr_ns0T1jWqh}pS(a=HEUQbtJ6q0bZ26Bkk{Di{aTW@he9qt*^{cNVG{$o_&$~66g}h|T z@QK^Or>e{PP5VM={;>9yiu!w7 zU!YFfYiEa8*upJh8;~yWi7l#g{!npEeC`c`V$U<`M&!0#PS>k98CT`dSQA?ThUE6* zO@Q^Afo_hMZUXezfc=$}ZGx0-iv7QKLk(F0b_nDGFS|e$v-gzC4@pB178|9JE-8H% zZFCFfBp0hG+hi1OJLU$R$#o)|^Y%*g70y)A-GbHy9SBECL}THfXpNTWxhAg4AR5cz zeH4B4iDtjJUuAEV-63pu@bxZF65LbcS>?b1Ob!b8HD0e$dL*AmD8aDkMB`;*SBZT! zW<_yORxm_Bo|ncOB3P^pY_sD28n2=_B8rEE^CoXq71N^UwipquK#7Bq>kNiVjJRKk z*o5aw><5lYHB&cu0!mElSA+`NXl6{>Sd;%yygd3iTSOa4CROTMQ0U-l};XaE2J diff --git a/pitiupi.testSocket/src/control/ChatController.java b/pitiupi.testSocket/src/control/ChatController.java index 96a3361..2363df2 100644 --- a/pitiupi.testSocket/src/control/ChatController.java +++ b/pitiupi.testSocket/src/control/ChatController.java @@ -20,7 +20,6 @@ public class ChatController { private final HashMap chatMenus; private final HashMap chatWindows; - public ChatController(MainWindow mainWindow, ChatMenu chatMenu) { this.mainWindow = mainWindow; publicChatWindow = new PublicChatWindow(mainWindow); @@ -28,7 +27,9 @@ public class ChatController { chatMenus = new HashMap<>(); chatWindows = new HashMap<>(); - chatMenu.newMenuItem(new JMenuItem("Show global chat"), publicChatWindow); + this.chatMenu = chatMenu; + + this.chatMenu.newMenuItem(new JMenuItem("Show global chat"), publicChatWindow); } public void addChatWindow(TcpConnection tcpConnection) { @@ -36,10 +37,8 @@ public class ChatController { PrivateChatWindow newChat = new PrivateChatWindow(mainWindow, tcpConnection); chatWindows.put(tcpConnection, newChat); - JMenuItem newMenuItem = new JMenuItem(); chatMenus.put(tcpConnection, newMenuItem); - newMenuItem.setText(tcpConnection.getAddress().toString()); chatMenu.newMenuItem(newMenuItem, newChat); } diff --git a/pitiupi.testSocket/src/plugin/TestChat.java b/pitiupi.testSocket/src/plugin/TestChat.java index de25242..72076d1 100644 --- a/pitiupi.testSocket/src/plugin/TestChat.java +++ b/pitiupi.testSocket/src/plugin/TestChat.java @@ -8,6 +8,7 @@ import pitiupi.net.Message; import pitiupi.net.tcp.TcpConnection; import pitiupi.plugin.PrivateConnectionPlugin; +import javax.swing.*; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.ObjectInputStream; @@ -57,9 +58,12 @@ public class TestChat implements PrivateConnectionPlugin{ chatController.receivePublic(testChatMessage); } + @Override public void receivePrivateConnection(TcpConnection tcpConnection) { - chatController.addChatWindow(tcpConnection); + SwingUtilities.invokeLater(() -> { + chatController.addChatWindow(tcpConnection); + }); } @Override