From dc31707917e86897b34b31e266d753eb7b381347 Mon Sep 17 00:00:00 2001 From: AstridMatagne <113950313+AstridMatagne@users.noreply.github.com> Date: Tue, 25 Oct 2022 16:35:40 -0400 Subject: [PATCH 1/9] AstridMatagne --- .project | 17 +++++++++++++++++ ClientConsole.class | Bin 0 -> 2104 bytes EchoServer.class | Bin 0 -> 1983 bytes client/ChatClient.class | Bin 0 -> 1754 bytes client/ChatClient.java | 9 +++++++++ common/ChatIF.class | Bin 0 -> 142 bytes 6 files changed, 26 insertions(+) create mode 100644 .project create mode 100644 ClientConsole.class create mode 100644 EchoServer.class create mode 100644 client/ChatClient.class create mode 100644 common/ChatIF.class diff --git a/.project b/.project new file mode 100644 index 00000000..3305e447 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + simpleChat + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/ClientConsole.class b/ClientConsole.class new file mode 100644 index 0000000000000000000000000000000000000000..b43de9e92a9b241072d030e7df0bc0f6145646fc GIT binary patch literal 2104 zcmaJ?ZBrXn7(F+MY)BVd!dt<%glcUPD70v;l!{Uc8Vv+_NsFzm%jN`? z(u#n{DJ-J+hT|6vyC$PR&r5+eGe{uNl@C_|LYQ?@;M9iamK)hsOpv?gTlUzpX*iDb z7}Ivkax8yJpf??!2i%r@&vG^=bD5$*Y{o6g1fuBDaT?tM(R8M$p;w^uSkeS~a8`x& z3tT!0FyEqdGE;1az*{;_L2t)-3~IR0Ql#Z)RbQ5Mq%g$9Zp|0y33*!X*dj^#q$-W_ zWE^h`jL&+W>)lMv7|vxsRh53Nk}_Q?HGRul2ix z6;?+Y83C=LGT9E3pCBqzOpyApjuBj8xn$iU%UGJl(=f&=9V@$1dQHbT-V=ye3iVJ@ z&Z*Q6BqcD4>#CR^2%K%?CB5d5uznxv=)jvAZZ?U?6=v(EtSH?Ar}LI07i#5o>8%*+ zwiHO_UDL3OhG(h!#%9dlvZ^XNbWp=NG)ZjBtx{9+xI=hWaXp^3%cFEna*kLKreoPR z%$<3o66DiBr#H<*=s7ylFcop7KBwbzd?65bWZhR91iI6i<1Ccz=5;KnUiEJoPRW+@ zvRXAZ<(!&;U`SSTaV!dqtP-n2L&#D}Dz~JbZdtZW(L^O>3pFyzGiqXoG%OvIG#HDf zl4|8J0Xrz`haGHs!ipJ8QvzX)pbHvzTeo_ zY!jXT2UC7D`J&YDSRk?N);v?rv4!+!i*H92I}DL>l;1aa?T1Efl*V^-1PNaG+Tj&y ze0YuVj4FBUMo{p})z|}px z{|YyLBR~vEdUAqECkb(pX@Tq9o#6g0o_vH}e2fd2=GiQ+Vvf5&HcZIVDc&(PV?H68 zT1^up!l!iH#td=qaJL(g*941d5E^D#NDUJ@&`e@01{+@#o5Kb|k;0?lY#xDniySZAy zDsdG}{uyFPBe)<`ropU0t%_M6S?uHPT5@d<_sQ(*T^Io;)gx8BL=d(^>2{E_H+<}{ zNPUf*?I=Muz<(vUVm6rE$Y-PD`RCB)lUw{{oK^4K~(UVX`(Dh*r`)od#IA)04?XUkCC7RU8+-5qM^o4 PsYW@CEY?3abQLup3MWs!mkXErT2BC<6wBe;BrUF&FY=*G1+0EJAQ2UGg z+N))Z{So~sZSTH70@l+H%rZ02++~ zl)#8%c)KMpTqw=$c)qI}ezY&3K3G_sdsL}CTVLC#35aEZ{&~mteBJizy48_MVDObd z-?V9){)|8>zg(#EGw(EH7D@E0$RH~)P%&+}+G*`bx2Eq{QXp4x4Be{ht{KeZ#gxBi zdZev%MV5)yc3fZJ;+}3dEV&{*PjAXa*J;gLrnI?pCtrE4ALu1Zx0|K4o#)c<%Y^Ud zMa?!BO~Mq0s|f>nWYUCWkjUpA$yVjbVJtZm)(B-c*4e$*SxheCs) zrs5Iq(do#YG=2~mU)b1K+t4Pod8cDFG~4lGwUKdQNxU%yn@3#{-p<;d>--$tcm>-h zHWpqOvK`z|CZ@YhcEb7p$ct}K_eP!s1p4Og!-dK?3s4@FTpi*uYY9=Q;e>Ec3+wU1QDIsO|4-(qw#_wj37xp9cAxlay} zzsY|N!D*?;VX8}YCOmW-S1`pEyc5!C5zsN+IKINyqygpJMVVq!n8v-Bc%8FgZ{&!0 zhQ!4~d~=8g5oMPx$5`-WlD{lN{0?I_WK<)Bm@$Q=WAs_F1?U-~=N?l3X|N@NJ)~1h zba%N2EE9ue@GZWJrT)d(K){XUbTN7B4Jy+wkzP4B_-gts#3pO7u|lJ&FQKjmboG!f zC{YF~9%BTTS=udv1Vx$*OIYXb7WcOq@gw^2lqJ#`DH*%V=q9ehL=pR;v?&TDJtLp+ zn?NBhWIts+#WSvq@cd8wOYmHpNIPUR7<&z=e@Kx~!1qTec+BYllEGAAb{w|S{K^n^ F_g{F#z4ibA literal 0 HcmV?d00001 diff --git a/client/ChatClient.class b/client/ChatClient.class new file mode 100644 index 0000000000000000000000000000000000000000..5a695db34d3d768adf1ea427fd66998ca156b8b5 GIT binary patch literal 1754 zcmZuxU3(fu7(D}P7RVBiG-*?-#cCBu8vJZkVr#_GU`SIXp}p{CS;k~5?BMRwr~L>1 zlU~lqOd(ONw|Ni&)KLBpyk%^SR>(0=XURZA)+hH>r znlJ<|D<}A|p5(UsLFn5~k{8It@x!)2q2s90NO{rzcB>(Fqp1cmhcuQfm?#LWz6!qD z%YvFLyoQAwN6Qv2U`1d_jiuLAo+lkmB#^FX>O#l$Kcj&kf_&-PtC zPl85x>;?quob!r$jbjyrdgD2<%#D@LoS;z`k8N)-lzTD=>?7Io)u=1|C(;*KnHRF( zf6Nja)m{#7;~f*%1d21@IBVfuT<0l-Dt1-iLZy11ei84ZYN8^LKXpbHYFHOA2W~JP z+Rx4ukQ|hDCp`*|P76z_6IeT^ChncXws!pk3m@XDfE7q@aG+wL8GI~ov#BP-LD^Gb zS?9{5*p70jIM;S;mdgjyAGw|#vR}%v;hP%tQwulsQ5ru_TzYCITj?&3Z6%g}x@mYg z`EF=CKkeD$*2h{k;6_>3$J%qai+d(oa}7PW)xu762xE;lWJ4~`Dx2&2OY^-kjk7&6=&-1S zS^B>6r^EtT`SM0h3y&`03_u(Dz`}Rh&_Y!B>~iF2N!P*w4r#W0s?9bk?dYa<)x>vX z%hflfFncjJb%(NFX%=4=!5^<5zY83j$RLF*X9j0ESR4(w&ftHswtnRgbS^wE#8MqSmTTcxQsU<#v-oZP43n)&7NlTEnMYSGq#w~ zxux1~D6XHN{1@I!VaAt>vJK?174fXbtEW6m*kC2>HP*78VE)22TJKtofc58C-qYZv zk0NNw`Q!x`YAZ67osMK(;~2Qd*bYZ++OkW^4(09go!TSaenel6fv5CqxE0CFa^+|E zoWx%chwt}}iClr6G_aCXb&E+&oBb7ArLRx$%~_FMG9N@NR=hA_F<8&H3CK1$S<1Li7~b`1O+Rp^;qr84|2d3K`cHfxyJJwrOLtc33t&@DpHYVt Z10J57t2Lj{B$c zb|A^bzySc@svzqC literal 0 HcmV?d00001 From 99ff0a848962d729a3f0feeb718d31c2a904b0d8 Mon Sep 17 00:00:00 2001 From: AstridMatagne <113950313+AstridMatagne@users.noreply.github.com> Date: Tue, 25 Oct 2022 17:49:08 -0400 Subject: [PATCH 2/9] AstridMatagne --- .classpath | 7 +++++++ .gitignore | 2 ++ ClientConsole.class | Bin 2104 -> 2248 bytes ClientConsole.java | 14 +++++++++++++- EchoServer.class | Bin 1983 -> 2755 bytes EchoServer.java | 28 ++++++++++++++++++++++++++++ client/.gitignore | 1 + client/ChatClient.class | Bin 1754 -> 1754 bytes client/ChatClient.java | 4 ++-- common/.gitignore | 1 + 10 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 client/.gitignore create mode 100644 common/.gitignore diff --git a/.classpath b/.classpath new file mode 100644 index 00000000..f9cc034d --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..e589ae00 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/ClientConsole.class +/EchoServer.class diff --git a/ClientConsole.class b/ClientConsole.class index b43de9e92a9b241072d030e7df0bc0f6145646fc..7e3b028f5755041704f4fb4a8eb2be062bb8b2f2 100644 GIT binary patch delta 1000 zcmX|8*-leY6kVtHVh65D2WUj55Cv(0QUn=`15VXi6c8zbQc8tlZLyR=9EuvFF(hhk z;=4~g8c5|ifO#gk5OmEaBT?5t zD9FNuk?WY3IcozuEDPkNj36y z1vk_csY(o}pCq@qss56@;;b^ z&@>|e6QYRe@nBzLG#Hz5d1J}&R5+m^j#&Z2Y%nnw=9~Ik*lWE8Bm|7ncqka1j?X1c z5J+mRinMG&!4=r_SW^GUFT}DsTQHXTfdi1a#CAsp7RNS<1I{w0_Dz(o!S3HcnWZ|7 zV~(#VO~WB?p@ATGU;`&JXxl{RI(cPSP>gO!v;wGsk!LGkJNVws9}h}!8WlK)T_pJ>zS^MMBcr5;(Brbu&TcF5oQtQK zh*j3;7|SWSGmWc0O}aCUzO}twpEgcE$I(=S#MTrB^Rlbi4H)G)h9df6#W*=9U`Gf? z7|RgOO0FWF?0Llo;)k+|ZOm?An8cb+JvH>}NiGoJ#5rkw99ENNr;Kfk1T3SO6z)*l zcp8&gRp7t2LsJ$P=kT-HrX{($|7)`6n;J2N={)-m*)=EYEfJsOaY)TRhupk{`<^uv z`YjKA=Hf4&ZHR!ANd|NNhBW5aQ!FmvyjCpc_t1z!l04xp#h;fn^A-PJ6Y+-oc*}jP z;wavs7VqK2hpfC7BH0*^u*@iN;GByEMCDwxaU+kjthK~GrQ10_E3<}LHAA268@fny J*<9Pj%0CQaqFev~ delta 840 zcmYjOO-~b16g_Wd%Cu#~QVNx(P(qB6DPW5tB8sAdqHR^wmMWl#C`hFspxtQW*UrS4 zw`OO;(g4yDNmv_q{u6$Ic-}yWnPl#L_v74i?)_E0>GS^n`*RyWFAA&P9Z}zasD)Ov z2^f=w=|!63gDq(jCuB@JQW3Y%fs-<&McnP^v~U=w<&qZhoUw2SRVL2LW$n8dkV(Cf z1%no@jSiCc18kBcF>qYoOx0zvuJ2!`FbFQD}{d6B`0LTyprn1zRU zBR4EPcA<(o}0=qEP5d@qZ)n6dtu=!0w(e@<$5pX*xy{jQDYM}v+db6#L76efv!~o8t|hQ-O$lP zh-OX)IvMR|{2VjqQHKj?L?3hgh+%+Hz}_3kY%hv@BhI3Wgi~H0K{U2mxP;3DzQSk# z+Ah&_6T(ElQ2%a=^%TQ@H7h=|N26`9f1s;`YYEy=w1mXU?oL8!xJeC)F;K(r_5tHz zMR}Mrv+yC!)Ce)h5afpIX~P(IC^xZz=niGIWH;_Oj05!U;vRt&Pm>&mOri^<95$V;q^bVB78;w diff --git a/ClientConsole.java b/ClientConsole.java index 5a8261e2..a7b3e3e2 100644 --- a/ClientConsole.java +++ b/ClientConsole.java @@ -62,6 +62,10 @@ public ClientConsole(String host, int port) { System.out.println("Error: Can't setup connection!" + " Terminating client."); + //I add + client.connectionClosed(); //when connection is not possible + + System.exit(1); } @@ -118,15 +122,23 @@ public void display(String message) public static void main(String[] args) { String host = ""; - + + //I add + int port=0; //the port number try { host = args[0]; + //I add + port = Integer.parseInt(args[1]); + } catch(ArrayIndexOutOfBoundsException e) { host = "localhost"; + //I add + port = DEFAULT_PORT; //if exception from using arguments, use default port + } ClientConsole chat= new ClientConsole(host, DEFAULT_PORT); chat.accept(); //Wait for console data diff --git a/EchoServer.class b/EchoServer.class index 185a5ae777ba126f341607954c8a415b35a47829..560b6a314cd313d823a7195f1dceba89f2be636c 100644 GIT binary patch literal 2755 zcmah~?RFDY6x}z8WExWnfr69*!$)gUpiu;cwiZiCv6#}5lt=-^X>ywkBr|blQVQx1 zak+dHek*Ggm#pOj_z*sdy6?>7qm|M>GnsqO-TUlw_PP1%pFjQtFpclyhzKNd<(gfT z&boBshzShYWp^#>`U}~aRo8QjvKQw_5xt?KpC8OSw zQDE?;z@Bp5l$IxOARqk7&ejZX)?b|D_LOOv-n2k0J)bG@HEUO70#OVk@h*}A19{Vu zw_1%==`0(obt#a_+hwC(G8|KVhl??=mAYJzu4`1~oMSfv zet}Er{3B!C$kq+3nq6FdB+K3;;k&Xa$>O4ETg!Hsbf(mY_b?R45rKW()5WK*CmTr| z#jrrsZjpB|05|RIl4Dw4(Q~BHn2h5%Q|dYBakF}@W!5Xw(V$adn5pi_vNYFaWkOHj z7*45@oF;5<(gfw{$xKN_j3hCN_gPh=*_2jA;Cydrs4vqaIXE41Pin~UtiHwq`GjW` z+_`NiZNeQ?MxBg&Oik{(klGTr;kzY=5T|$ ztI}KY4NRbURn~dckedR-9F`tETf4}aDf{CUdRJv~I=!1xmFX>(DJW+ElWp__9w;GSwaw-aeFvj6u3MLRi*(v*bE+uF;6#KCtr@QFdj9&( z%^l}O)G$n{JCwfPlYV=WIJy$mIMxLAcTGBPd9o^wL(KtySzGs48+S%8wU}rhj9{LAXTGZaHN+XR2#`pnG$Vt193m#qduA5gfrg z*u$^5|E2NShlKwW>Q90@{rs9{WQ6ZMV@F?M@2~t7!9G3{{%VF8W7yB{LqQZ$IKVH) zclIYJiCcAsq`ks&hf`4&TrzwF|K{wrP}Ksx{MRJ zf-{)#>GS}oLpQ?pNzwo#lrhC*1U_YaKzx_PO2lxRcseA03*S|y{TcsvW_siecld@w zz8GU>LY5`6s0@bMEZ4{~wu$ST_&gx$YDzH{xJeaXkmn|wk@tC2*@+PH#JHOe(F>u5 z4*Ei%VUeZVjvh4UHc<;b*|$*@zN(R6H48iA7k9(IL;TV%_;(l)^q|K4mGMT~)%miE zpIQm}e}6|UE9~n%pDXD6Xr~jSp%x-D;%oLfhKHS=T=ktmYm+tg4ZXF!1!X2xp^MAV zcwZj8$zr8=V@9UiclAsTa@|_7A?CdJVC{`FONI6F+`|hk)M!lgR!R(`RwyJ=nlG>IXz4>OIqI{* z3!hGCV{io)o+S1=8&xS}gMRCL16f3UHJZU)J>o6qeVr9u55#Jhxu z;zh5DE9m3fLg!FFA~LQr)EmHbE*vLXk(gRyU&Vm#CLidjOx6m9Ar;qfoqrN$Woajq z*0M!@D)@O^bhAmG68n8ORNTZZDoSa^crIUL5Cg$Ey|vqV2X}ZyY;)KOTK-VWFBfwM z2U=3W93M6>Nip1$vB+PU-C`W~`CD^$qfPgGpyDCM>1#6SLQ%^qc*K91L#8!qnmf$( zqKpmhlt#GS+{EXl2;1Z@q(F(G8D>aSFVhqRC=@Y$0JL5(<|0rQkV4)H)OUuaj#jIY z?Ig7yc8c9q6)wU-5$WMHsN{}@8fy5ZrYnMX;`XNM9tEKnKS$(+39!-;hnSe0sq5h2sTT1HADA1_Ycfc zs?jXCi}_l!KS`{2&?81eV&o$hqQ_8T4%dh13D_EqVJSvewR{Y9QTJOh{PZbVpkfss zw4e>^1kvZzXH0R0PS@#tgA|Wp!xl{`K}zj8iFZk!LOaq3Vb5r8kXj{wl5Wy2AXpow zjr!Wc6Uul9uuYFZbqb-LlHCqzJ778`4?#wffyr2<&<^_dk`x%3b%l1#!0!G5*`}3b diff --git a/EchoServer.java b/EchoServer.java index 39579b5e..4ac086de 100644 --- a/EchoServer.java +++ b/EchoServer.java @@ -3,6 +3,7 @@ // license found at www.lloseng.com +import client.ChatClient; import ocsf.server.*; /** @@ -24,6 +25,10 @@ public class EchoServer extends AbstractServer */ final public static int DEFAULT_PORT = 5555; + //I add + ChatClient client; + + //Constructors **************************************************** /** @@ -51,7 +56,15 @@ public EchoServer(int port) System.out.println("Message received: " + msg + " from " + client); this.sendToAllClients(msg); } + + //I add + public void handleMessageFromServer(Object msg) { + System.out.println("SERVER MSG: " + msg); + this.sendToAllClients(msg); + } + + /** * This method overrides the one in the superclass. Called * when the server starts listening for connections. @@ -62,6 +75,21 @@ protected void serverStarted() ("Server listening for connections on port " + getPort()); } + + //I add + protected void clientConnected(ConnectionToClient client) { + System.out.println("Client connected: "+client.toString()); + } + + synchronized protected void clientDisconnected(ConnectionToClient client) { + System.out.println("Client disconnected: "+client.toString()); + } + + synchronized protected void clientException(ConnectionToClient client, Throwable exception) { + System.out.println("Client error: "+client.toString()+"exception"+exception.toString()); + } + + /** * This method overrides the one in the superclass. Called * when the server stops listening for connections. diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 00000000..8d8b1f45 --- /dev/null +++ b/client/.gitignore @@ -0,0 +1 @@ +/ChatClient.class diff --git a/client/ChatClient.class b/client/ChatClient.class index 5a695db34d3d768adf1ea427fd66998ca156b8b5..c72bde413e5d997b6884f5ad5b2737900a10aeaa 100644 GIT binary patch delta 19 Zcmcb`dy99&WmZPU$yZoifTSebK>$fi27Ukl delta 19 Zcmcb`dy99&WmZO($yZoifTSebK>$g727~|r diff --git a/client/ChatClient.java b/client/ChatClient.java index fccf1ce8..47475f0b 100644 --- a/client/ChatClient.java +++ b/client/ChatClient.java @@ -79,11 +79,11 @@ public void handleMessageFromClientUI(String message) } //methods connectionClosed() and connectionException() - protected void connectionClosed() { + public void connectionClosed() { System.out.println("Server closed, quiting"); } - protected void connectionException(Exception exception) { + public void connectionException(Exception exception) { System.out.println("Server error, quiting"); } diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 00000000..7195058b --- /dev/null +++ b/common/.gitignore @@ -0,0 +1 @@ +/ChatIF.class From ff89a3c7db06f45c5d876c48cc44fcf96103d8f2 Mon Sep 17 00:00:00 2001 From: AstridMatagne <113950313+AstridMatagne@users.noreply.github.com> Date: Wed, 26 Oct 2022 09:01:10 -0400 Subject: [PATCH 3/9] AstridMatagne classe ServerConsole --- .gitignore | 1 + ClientConsole.class | Bin 2248 -> 2248 bytes ClientConsole.java | 7 ++++--- ServerConsole.java | 46 ++++++++++++++++++++++++++++++++++++++++++++ common/.gitignore | 1 + 5 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 ServerConsole.java diff --git a/.gitignore b/.gitignore index e589ae00..13a34b62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /ClientConsole.class /EchoServer.class +/ServerConsole.class diff --git a/ClientConsole.class b/ClientConsole.class index 7e3b028f5755041704f4fb4a8eb2be062bb8b2f2..e62a86ea2902169aeb4e25f90aa6611200f69d2a 100644 GIT binary patch delta 135 zcmX>hctUVP8=ImT0}F!{gAju)gD8U?gBXJYgB*i1gDQg?gC>I)gE@ou-onXe*h@8Q8JHOw7+4uv7&sZ) hfO delta 135 zcmX>hctUVP8=Imj0}F#CgAjuagD8V7gBXK7gB*hsgDQh7gC>I~gE@oOf{LaeAaxR-h#IA8CV&b88{hQ hfqL43dOCo5x`29m7^E5c8PpjjFlaMOoSelG2LLV~7!?2j diff --git a/ClientConsole.java b/ClientConsole.java index a7b3e3e2..efa6c3b2 100644 --- a/ClientConsole.java +++ b/ClientConsole.java @@ -50,8 +50,9 @@ public class ClientConsole implements ChatIF * @param host The host to connect to. * @param port The port to connect on. */ + public ClientConsole(String host, int port) - { +{ try { client= new ChatClient(host, port, this); @@ -60,8 +61,8 @@ public ClientConsole(String host, int port) } catch(IOException exception) { - System.out.println("Error: Can't setup connection!" - + " Terminating client."); + System.out.println("Error: Can't setup connection!"+ " Terminating client."); + //I add client.connectionClosed(); //when connection is not possible diff --git a/ServerConsole.java b/ServerConsole.java new file mode 100644 index 00000000..ea6d2f0c --- /dev/null +++ b/ServerConsole.java @@ -0,0 +1,46 @@ + + + +import java.io.*; +import java.util.Scanner; +import client.*; +import common.ChatIF; + + + +public class ServerConsole implements ChatIF{ + final public static int DEFAULT_PORT = 5555; + + EchoServer server; + + Scanner fromConsole; + + public ServerConsole(int port){ + try{ + server= new EchoServer(port); + } + catch(Exception exception){ + System.out.println("Error: Can't setup server!"+ " Terminating server."); + System.exit(1); + } + } + + public void accept() { + try { + String message; + while(true) { + message = fromConsole.nextLine(); + } + } + catch (Exception ex){ + System.out.println("Unexpected error while reading from console!"); + } + } + + @Override + public void display(String message) { + // TODO Auto-generated method stub + + } + +} diff --git a/common/.gitignore b/common/.gitignore index 7195058b..59994316 100644 --- a/common/.gitignore +++ b/common/.gitignore @@ -1 +1,2 @@ /ChatIF.class +/ServerConsole.class From 9a39452da53f2ee0abea82f6e536e521b216d60c Mon Sep 17 00:00:00 2001 From: AstridMatagne <113950313+AstridMatagne@users.noreply.github.com> Date: Sun, 30 Oct 2022 18:57:07 -0400 Subject: [PATCH 4/9] AstridMatagne --- ClientConsole.class | Bin 2248 -> 2534 bytes ClientConsole.java | 17 +++++++++++++++-- client/ChatClient.class | Bin 1754 -> 1762 bytes client/ChatClient.java | 2 ++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ClientConsole.class b/ClientConsole.class index e62a86ea2902169aeb4e25f90aa6611200f69d2a..61147eca39aa717994e14feab0393df77d73e7e6 100644 GIT binary patch delta 508 zcmYL`OKVd>6vuy)-08$?u#IUJR>grzvD6eoi$WIl(FU6?B7`n12sKS^YarZPlABsv zHCo@g()bqKx^4?8D0E%i`6c`qttTS7nK}F)=YQtRUgB5M{jvXT7ntDXrkmES7@=Yy z=ZAG~&DKhGrBw5pbz5oL<)9vBtxJZLIJa0;7~fkB^S&6OXNL1GinTbs^mVH{ac1a` zaZfRpD;BR7ZQ2$BTML$|zRgeB#^wDsI`-U?|bF28u<2bX+dHHHQa9(^m;1N zC@XX~JEL&QH%p;mWBaEbjJRqMhaQ>TYww$rmCW20V>_HLY;odfqr>TRhvqrwJ8Etu zgp>t8vQb-J3nqWQxnQrrLOO(JOeNYY}I9MjAamGwY@WP2hu*m}hfuZ4TV zIB&VgJ5jwC-3NK`M~Zx6p3hYH!Ub_%=TLV<9 M$0hf<7$Us*4G~>u4*&oF delta 220 zcmW-Zy-vbl6o#Mv@inyxZ76Ya>d=@96SD*~(KwJeIvNMvtrm+ExC5Y9(vV2PVB*$r zAzTLaXwGonyg$#ORr${Txcde!S(Hx4I(5)UT$*@)>fPmzKrt?Utch(ty*wt0Y;)fT zb%zR54lat^J`1&n*l%yPypB3wyp=Mx@Mw`@2pqbc6tx{bFNs(Yv!*X@Pg+9YgG|1` sIYX}gw-MLa=maPxd`cEccgjH2jdTO_TJVMe!f|2+1%dOC;%Bn1~7sYAo$d9n?y`YpZlK z2yx`VJn_r37eVL6FpW7UESbJ&6;YI`#d2 z-#H)iHrGpNdT9C-8Bk{EpJAp(7_9H8v^7I9C(nWiC+SigM~xK?*8Z##wUKt~m2TS! wfeb` Date: Tue, 1 Nov 2022 15:33:27 -0400 Subject: [PATCH 5/9] AstridMatagne --- ClientConsole.class | Bin 2534 -> 2695 bytes ClientConsole.java | 17 ++++++--- EchoServer.class | Bin 2755 -> 2241 bytes EchoServer.java | 37 +----------------- ServerConsole.java | 38 ++++++++++++++++++- client/ChatClient.class | Bin 1762 -> 2720 bytes client/ChatClient.java | 82 ++++++++++++++++++++++++++++++++++------ 7 files changed, 121 insertions(+), 53 deletions(-) diff --git a/ClientConsole.class b/ClientConsole.class index 61147eca39aa717994e14feab0393df77d73e7e6..e6b7c3eccf08328d4d6d1b0bd12a2499446840a3 100644 GIT binary patch delta 601 zcmZvZ?MqW(7{-5R=R7-Ojnd5})^LpcP|C0^C|J#2S1E^);D-#1<`|~sw&u|-Q--D4 zd&c@u^d5wtr!XVIKcIgj=+9`~XGNd-@?7_GU)OcNJkQU-YS8=r*S8&DfVH|esye-B z*gp2q=0tNohUoB6sU=io@4SyYENGbdT*V&D+Zy`8LxZ&yH4!qos}Y{c%w_s-X7UsL z>DlS=TT#>rh=1iqa-Bfhf6HnQZc6A$JGhND+85elCLL`syG?9# zgCkoUOBfr3{N)BcT}Ff3M^#H0RH96{yWFB(C!A1@Xi-EhR_Zx)-ygn?j-rhK)fRTM zM2a!4F(S->%y*T}TGJD$cC$v97aX8Ql$XSKMUvN|euKqZF7r-&@5T9naXvD|C(3+g zfiIktIz@Il+j5U(L7jQda8^D?QQ;gOTy)5LtZ-kru)NJG49 LBRvzJi|4-q-57kU delta 448 zcmYL_+iDY06o$Xa?43!{pgCUD2vP{eMkAyK3xRkpJrD+zUKkLfjcFC3t#*303^vB9 zy=up^;BBtcLMj$~03XE1Fs>1?H+wDq!}{0S+v#7)$j{&3e*l-+=|u9{4B>dT9>^_6 zSz*<{nro~&6LXG%d3IzGJa< z&<7AK@D66d9`O6F^}xhC%sdQgz-)W2Q(7#JAr7*aNJC9qCzU~^#Pn0%0J8mAe9JcBud3WLSu1om`JTLv+p z8fgam$rsq8c|91I89ad^9t@HUUXv|20$KfmtboaV9MP=7Kvu})cO2=g;S8z_5tE}h qLo^eC>XR5)84?*d7?K$Tf%fq*Fak+V1|bGvAk7GrWnf@pNCp7pS{sJ| delta 664 zcmZvZUr*Cu6vm&oTi14u;J}Rti58Ru@DI^=p|Yr`Trio2fh0I$EL$ms($=<&ikd}@ z@dGsRD{$cznxMhN#CYc?@XC*(J`57PAWhCW?>SGO^UM2w&;KZ7fBxD12H*x>Y-gXy zt@N5;%;khhKSPGT|@`uw&H!>|V$YB|_fa)7TXtF0z z7&^jZG7Evuz2M}qhH-(6V~3IHs_+C_gA>*2gQ|W(zvHbt4c+x3eSfSkd4XPcY}1Xx zeg#hjx(^X1;=1Wawny@`5m+IINAL>>Qb}Qx!HmiGAKrmO(R0THI%XoHzFIN-S!2;L z6@5r6{m3xXK_6#XDsa|inxV7j3>L9T1Ocv++(MVlbA{dlxcaIRW*r~ zn*5N}T=Gk?%ZFE-C-$njnP4PEGN=S9xQ!}>S1Y36gO(n#v^ z7c@#+P%HVur_xu5`M%Fsshr=z>K1bMKcc70-NB`8Nc=RKE}$2u&<~#`$7ymA#~51y z$4v@0D2cgclMF8@eMRwW%HLoBZ!v;*ZMG{U<$eSRnI#P41Tt;9G$K4^r " + message); } + + +/** + * This method is responsible for the creation of + * the server instance (there is no UI in this phase). + * + * @param args[0] The port number to listen on. Defaults to 5555 + * if no argument is entered. + */ + public static void main(String[] args) { + int port = 0; //Port to listen on + + try + { + port = Integer.parseInt(args[0]); //Get port from command line + } + catch(Throwable t) + { + port = DEFAULT_PORT; //Set port to 5555 + } + + EchoServer sv = new EchoServer(port); + + try + { + sv.listen(); //Start listening for connections + } + catch (Exception ex) + { + System.out.println("ERROR - Could not listen for clients!"); + } + } } diff --git a/client/ChatClient.class b/client/ChatClient.class index c24b78e1757510509f70add3d069fe57f509a597..e209323995d0a71a38ea2a3680db03bf8d8c074a 100644 GIT binary patch literal 2720 zcmaJ@YjYD-7=BI@$Trt)9N0DqL@bIvYFN~<5Td(Qiw^Srm`eK&vq^XC$PgSZnz zlR!t#v8|Fnm?@ZkMlEBA3iP-+Z*DNu9h&w0ikS=b0$L!S%nBq%a&EEcmel?1@Q}dT z{dURr4+`w)8@XU!HU}NEG(R}*SM1XKQ1+qY{Zj(*!&h@w*|*)27ek9cr@CdkgW0i~ zMj)DT^Hv-YwCRW;A<(@VeE(E47?X}QSR3c6Q^z`V3ADLotCVp|B`YTl2}Js&>BNX# zvQAWsvsPuooOLXL{~W+zhg=9dQ+dMB`PMKl3-CbJrL zGvMAhp2X8JJhjaI09(g1*u%1WzFG0TY1=RShYM$91)tNgSGwC8Sj>=ZOr+Ed>DZ60 z0=j3F@)K^5P7P${@9FX%WV z2@}0kwOP4Xc$FcM99=<@ms67zXdU;>+{IC|toWkgh`^d&2_UnO)o~2R*%#KOs_BqM ztJeFBhEe7!@Wi-cJB}d%G>p-SUdNqx=jNn;FY9;(;{q+V7t-0vD>kcSP3oAE-Y0U7 z>sfWaH{%q}#Bh3fHLiKSRn&17GemH!47VQONw%xcdRb<1NW-fF+x&tRCd#lq!*r<1 zUo%LeT+mh)i}D&~V=x<9xB*5-PSLI`k)4tTCbXZR6-(h6<%-LWD>8P!U`S(iXm+dy zQgN+Jgw3@ruyu8RYR+i5D6sSY@WZ1DyvTOy^(=XKPj%&inNcXe6A_}kDpBx-Wb2@N+n3#GRK zwT*)58J_Q!%d#M+@P>{z@fHbfU6q86_GM*jH(L*8ZmsBQOxKawpyO_}lCy?wITsW4 z@56wcN1RS14ZkCTKMq?yV_e6ep$X00MY)SZ=PJ*0QNG(#>CL~PHMQ$kE*Fu!PgxVX z`AjPPE}{&e1%pUnH`Y_03hrS8HgZP<^k9>+*pAKE!rM|Ntw$(*1Y7x(7Kf>ky0+9W zXiqP~_yaqeP`4LX+Wlz70cEEThR3msSc3kfL(H#uM#h^;CkGet#9g$ci2UpV zHp%zC1$2%|Ysmx37UO&VK5v5YZDbxID$boMGe`J5iZ*1?f#Z~q^27;7HijKIiGKFC zjNJ&V)qG0fMHPDwvy;I~^yV;6X^3f^r=M5duUW=xk5#J`FkYB?Pd4_L^+!|0NIugK2r=x8A2PE%i mLjqq@_6?=qG70zCl;1VD-5Q#aY2klR$zM4~-r=?h@BRy-*j{4* delta 648 zcmYk4UvJV-0L9O33#B*3EgK+2laa;v2TYhloub>+sT-3a%9wL+1S+Y)R!d#CdjFmKJLk0hl>U>HKmLCE4qyelL)lW!N(d~NxPmzW zb6`2$ZMSK8`<9nLIryzCYu8L%59Za?vcPo5bsVeX+pe?LcL!G2z%o{Ktnlb%d%s=k zx1C<8`F`MAuT0#*-5{mq*VhCxV`RP)-MXBA^Varlrzi0M>pC6^%tqI3x76@#$8Y+c z)h1yBMFIVFxYc)pkFj#DCXk-6EYEYj6I7ta&n3bx4HHj-Uur5VnXPGJ8!Z9NdT09_ zE>hW&;R~i`7Qf=Wg2D(_hXevKBp@lwa6ZpD z7%YY=XPYokLlRq<;+R4mSu}8(iu@SNb&e}qU4QA0MMaq=#W!9xrH>J zCbdgE4SkKzxIJ@kg!@A-l*nFk1Un_rifqiWaAG4EYI6dqQW Date: Tue, 1 Nov 2022 16:19:36 -0400 Subject: [PATCH 6/9] AstridMatagne --- ClientConsole.class | Bin 2695 -> 2728 bytes ClientConsole.java | 20 ++++++++++++-------- EchoServer.class | Bin 2241 -> 2586 bytes EchoServer.java | 14 +++++++++++++- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/ClientConsole.class b/ClientConsole.class index e6b7c3eccf08328d4d6d1b0bd12a2499446840a3..5a9e8d60c4c4baa4c4356db628371b627fd6f99f 100644 GIT binary patch delta 504 zcmYL_-Ahza6vcltbMHOlV1a`dyEfp16*Ph{(_nPLvGD^7Cn1o?w-6+)Ff>9E)BYpuQ4I%nSh=BG~o{QLzJSwBc!^OEM-^T)#@ zcRP=oz3q7P8;7LW+4OKZ(V9)G#1xftfJ>^Ax=l$jPZe*uz@lcBHT8~wRWhv8$a}8xf$MBgV3S*H z(Z#m5eblZ`JYq+CKSx^qg(vJX#-2>SGQ)S;WHCXt{TAK`L3Xccr-PVGr|8s|#btd_ ze22II!<@o6vUC(^LAAhr#VV=m;x+RhH0Tiynm>%c+Qr-%SyMZ!8mJY>3v*( delta 472 zcmX|+OKTHh7=@q7++qc>iJ_#1WTA9X377~9!6a5IiVUHPERsb<+}Um_B2h7n!At5T zTG54)YO5gWHVGu90e?V$RO^|sbn)HZbKdtk-%g^PnA$(s`wNuV=ugc#!-CU|_`nX^WMCb-(|JfBVLI;^rjO-U89xYoM6;1q{cj|WJf%nkgE^4H0Dad8jy-L zMx0MtBc5KiLu100v*08hd3$6Ec3^7C6snpR$o_x5kBQA`;`rg2ro~N`xkpt>N%`(F z6QtDZg&eOq!5jJ4)$x`yyqDS`%?24hbB-@$`AUv&6#1@6T|73a@k29zYU&pE*=B`b zJ`H~JoIjK`evOkMz!2~Wi$sYCo+Qy`1B0+>QADa3+qMXvFVQ&K#p z6)LLEn$`!Yj*zqJ4c?98TKSeh7qJiZ5!0pPa@)Xg@$a~_tV6D1A64C;oC~(=Wo;v>kb8v$ZC@s=3ybil%Fs&6?@i zY8`K;gNE&s&*FC2^pkG89!VT)m`=SZm!$8T8*;&OTM-k1OT&qnm)D+2D<~0uTPa5G zaMO03svFZU)Ur4UBZE@{2NR0D_5<0{@i9(QP zj<1jiIkJv@moyYQO5jHK1r86t>$sG|WlUyp zg@qCdvQsJ@B^7U`t<-Be8C>0|cqp8P>m)rC)?^M-nAS0aSvCNx)(iZ5cF@>GvWFVx z1(3rHlry*~aPt2%uj3YOla4Qgva{|AoKLD7>ynVAt2a|4u%zP-mdW2|VyfVkB#~LOBntaEQcxshA86?INow5`oUye#~3eH9Ti#VvBm>K#38Pn15x-wwetBm-i%*h^gA}+?Q&2l@v1;(t+5I z^gP#_G&H;r$jUBy4n8I_P}6jKYVHCGv~`k>)ByXyVkTIcS59N<&q9tS+1A8>V( zcl-F(M^3y!ek8B`g2O*@-G`%m9tg2ViF}M$V|;@9;eC8a59&|HK6DzHlS zXZYJup;jr{YpC)ojk`S0qVI1^WiXZI^%|DrVD9r+g*?~|=3X336hn_@QnE5B-=ZM5 z6Os+~C=JGx(s+P}v6mHkQ6vYtULMg4W%{}UGjg<@mOSr*#8aewl<(tYt3uZ!gxF6S zb;uZfHIAW&z8=NUU^?DL&xO%GBI@G=`+*+&flx+48SUNipY4VJg!oVQz;B`z^KX#9 zD)Vz)b)0Sdd^@TsZ`W8XoTU~@AtOTR#d0o=g~)h;O-7!^Rxc;lxmG#J(rf-D>-Fsv Yv_Ff(&HM1}zrlM;Qvd(} literal 2241 zcmah}YgZFj6x|n664C%RO09@GR-s8$(w8ryP=p}ZASsCv?ZZwc7czF3Va*J*{aJ0- zifh%i`UCo-y1MVo%>!EG%bmHez0W>ppZoVefBpqv0j(s41kz=z?bW1zDE%Z70#lw9 z>=c7&p}5oxLf^E)cwZp1QeItpR;j4pu{IgrD^9!oXA%no&m8-tD7xN3;&Q)HUhi1_+ z-QD75^R=|X65;!@Daqxc?YVVN2c2(>;v-BYaY5ir|90)yAe4IM|bFY-dWrj3xG34g%qXXM%Nk0XH3U#E0FD+>w%GSJ*#wC2LQgV&3gFzFN zw@dkkIx&;MEIwgY&Ha7pwghes9@YBt1Crz0n!A)jo_CEMCMY7jq2O*FL+KKph@t|S z%bZ^N8 zjuTgfwLg-Uu2x!VcrVyhuIXo7ZweTv)%yRu6L&xgi?myr3;$~494?8X*buZp=Oz7e?m?#|%tn0Unw zv^LpFfv>})Mr{pjsD$Z2%fDE1U-g*4y;B1n&|Po)-p}e0p#4+W78ut&()T@o-bmr4 zz^Lq^r}3Q<@_pBAQPcM@dhL32nXgE%tRB0Hf=qUVE@;~fj3A8GPcH5ppVpdp;9GLl zRu9-j|Baecro>eiozEqPZ~^aOgtKHcOK}`Unq!J5b(LL%ax`5ouq;?j%kl{dJ0ql4?&TnB}l z{ORCU2cH$VcBfA@9$mVFE4Yj6Y)M6D#6Uf|8O);LVETAs76+Ywh>`Pp72X0;X~<0XDzofCM~tI1;I h1X`P{*&pex<0UW|RFf_?>3eIS1f!Zja94TW`WI4v_E`V` diff --git a/EchoServer.java b/EchoServer.java index 18456329..026394f3 100644 --- a/EchoServer.java +++ b/EchoServer.java @@ -19,6 +19,8 @@ public class EchoServer extends AbstractServer { //Class variables ************************************************* + + final private String key="loginKey"; /** * The default port to listen on. @@ -52,9 +54,19 @@ public EchoServer(int port) */ public void handleMessageFromClient(Object msg, ConnectionToClient client){ System.out.println("Message received: " + msg + " from " + client); - this.sendToAllClients(msg); + String msgStr=(String)msg; + if(msgStr.startsWith("#login")) { + String loginID=""; + client.setInfo(key, loginID); + } + else { + this.sendToAllClients(msg); + } } + /*if you want to read the information saved in the client + we do client.getId(key) for return the login id*/ + //message from server user public void handleMessageFromServer(Object msg) { From 848c50b5283f6034b295e23c3c9a25a3b5714364 Mon Sep 17 00:00:00 2001 From: AstridMatagne <113950313+AstridMatagne@users.noreply.github.com> Date: Thu, 3 Nov 2022 00:59:57 -0400 Subject: [PATCH 7/9] AstridMatagne --- ClientConsole.class | Bin 2728 -> 2583 bytes ClientConsole.java | 58 +++++++---------- EchoServer.class | Bin 2586 -> 5345 bytes EchoServer.java | 141 +++++++++++++++++++++++++++++++++++++--- client/ChatClient.class | Bin 2720 -> 2759 bytes client/ChatClient.java | 2 +- 6 files changed, 155 insertions(+), 46 deletions(-) diff --git a/ClientConsole.class b/ClientConsole.class index 5a9e8d60c4c4baa4c4356db628371b627fd6f99f..5c5f76d7ae565028ea0e86eff56b3f008aaaa803 100644 GIT binary patch delta 1136 zcmZuw+fEZv6kVrt$_&jIWGEI5B&{N9u~G3Bhl`?!RBKVd3j$)5TEW_4LA+wU-!;K8 znrM8kuYeY!35l=1`4hg%7l>=7L?5)t%vop7-fOSD&+3QrH(t-TU!UgyG~wxlXUe;F zZDc4m7Tb`Fr4k!DM>B(|ME%5EyLbD4zE78kAEH`KrW1pyaEpNPZ>oSimmV3lN|Z*i z-#V!Hiw^3DqTL!%YUE)Z9oBorFS@KbWs^8+%`0KqE8w#xq_0xLNdZ@r--8~U(ouqS zHae~23EG_dsnK{Mp3!j`S1h-CmCpl#YqpZ5HoBqX0K6)0 zT3_8Eam)JYZnn&#enrI{YqF>>@Et1L9IP3fff4+I^6uL8Rm8qeSdl}8DXoyYCR>JO zXn?};12yab*ais`WvF*fDtO{YGuEI5wP?c*gt3!RTMFFR#WVY7VmJ0sm5o}6Tn^d` zjocMvYsEhDw(+YEt_4y{6+%TetRgII)Zk?{8{)f^QP0R=b5sRC!ptKQ;ku$Wk3+eI z`N$M1jm|u(C!K<2q(8FQ!b%nduSr8MmZF;{{iKYs=xHqHT8RNizMt_VN3ft@W5O{< zznADZ6NRHyrG^fb>;fmOwC2n9bQ^s$=% zLNU%^u+XK5af&K4yC4?LefZ+U(O;Fly#9DG*cSci; zKMvVHONMyb{#{CnXYB2AT0SZew!fFdQ61v~o_@oJF}&c%o#=KV(~n8y?GNOK^)Xm} zOp)tXd1u$G0DLH+tl_vo%dEL*?k<_->D}pa&6>8VepE1LA6Gi-I;sNRQYCMe9CA1CpOfL6AaYHT7P z#k9K#!e$!F-n!`V%bO!8uN2jzBpC1wiR|6#z3W9w(_-NrEHj!q_hgV zG@KTQ+fg;HYB(zpv$JZ<{!5AJn#++Mw1cYIPD|$V0*WIf$vr<~)_OFYvzOHI*bh)4 z^D!PwtRs-vKxlMFlwtU5bgUwrwf|J_mjVdch8C&^(1#G8tquFI9RujX0d({7doheh z$&qL>F}t5%;{Z;J%+6~%8W_QJi;g- z!aa&9dy5{fKkMoX689XAki}7@v13jnmB1*k*Az0st2si#?74xl(ZKWTI7S^44HR4j zVA|>Ib76D5=?T}9wr1IFPr_*S^kNz_^(MRck?fA(*8|0j)R&NYvI)5-lTdoT!Ha#X z2&Lq}iA+oA7GrNpc7hEEKGZtqQ*uOZU||Ev(KYn0V{b}vYIB1!`jsNyp={T%1; zrR&}@{EjVnjVEBcv;R(%!p6;s@?s0~1I$JEa&J(K%$70*UEsP0hbU`5qanV)Tf{1C z+(MZ;=YC?GpO=}|*t~79 diff --git a/ClientConsole.java b/ClientConsole.java index caa0e752..859507f5 100644 --- a/ClientConsole.java +++ b/ClientConsole.java @@ -51,19 +51,17 @@ public class ClientConsole implements ChatIF * @param port The port to connect on. */ - public ClientConsole(String host, int port) + public ClientConsole(String loginID,String host, int port) { try { - client= new ChatClient(host, port, this); - - + client= new ChatClient(loginID, host, port, this); } catch(IOException exception) { System.out.println("Error: Can't setup connection!"+ " Terminating client."); - //I add + client.connectionClosed(); //when connection is not possible @@ -128,43 +126,33 @@ public static void main(String[] args) int port=0; //the login id - String loginID; - - try - { - loginID=args[0]; + String loginID=""; + try { + loginID = args[0]; + } + catch (ArrayIndexOutOfBoundsException e) { + System.err.println("No login ID provided!"); + System.exit(1); + } + + try { host = args[1]; - //I add - port = Integer.parseInt(args[2]); //convert argument in int - + + } catch (ArrayIndexOutOfBoundsException e) { + host = "localhost"; + } - catch(ArrayIndexOutOfBoundsException e) - { - host = "localhost"; - //I add - port = DEFAULT_PORT; //if exception from using arguments, use default port - + try{ + port= Integer.parseInt(args[2]); //convert argument in int + }catch(ArrayIndexOutOfBoundsException e){ + port=DEFAULT_PORT; //if exception from using arguments, use default port } catch(NumberFormatException ne) { //we check that it works for any other format port=DEFAULT_PORT; } - ClientConsole chat= new ClientConsole(host, port); - chat.accept(); //Wait for console data - - - Scanner sc = new Scanner(System.in); - System.out.println("Entrez la valeur du port: "); - try { - int port1 = sc.nextInt(); - ClientConsole chat2= new ClientConsole(host, port1); - chat2.accept(); - } - catch(Exception e) { - System.out.println("ERROR - No login ID specified. Connection aborted."); - ClientConsole chat2= new ClientConsole(host, DEFAULT_PORT); - chat2.accept(); //Wait for console data - } + ClientConsole chat=new ClientConsole (loginID, host,port); + chat.accept(); //Wait for console data } diff --git a/EchoServer.class b/EchoServer.class index 2e4a8f389c71025edb0cc337001aa862f721c2ae..e3ea1c225de4226c9b197f2df98bcae98b3b644f 100644 GIT binary patch literal 5345 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 literal 2586 zcmah~YjYE27(H(j$tEro!%a$sm2zo%A)-a0DPXS=Wo;v>kb8v$ZC@s=3ybil%Fs&6?@i zY8`K;gNE&s&*FC2^pkG89!VT)m`=SZm!$8T8*;&OTM-k1OT&qnm)D+2D<~0uTPa5G zaMO03svFZU)Ur4UBZE@{2NR0D_5<0{@i9(QP zj<1jiIkJv@moyYQO5jHK1r86t>$sG|WlUyp zg@qCdvQsJ@B^7U`t<-Be8C>0|cqp8P>m)rC)?^M-nAS0aSvCNx)(iZ5cF@>GvWFVx z1(3rHlry*~aPt2%uj3YOla4Qgva{|AoKLD7>ynVAt2a|4u%zP-mdW2|VyfVkB#~LOBntaEQcxshA86?INow5`oUye#~3eH9Ti#VvBm>K#38Pn15x-wwetBm-i%*h^gA}+?Q&2l@v1;(t+5I z^gP#_G&H;r$jUBy4n8I_P}6jKYVHCGv~`k>)ByXyVkTIcS59N<&q9tS+1A8>V( zcl-F(M^3y!ek8B`g2O*@-G`%m9tg2ViF}M$V|;@9;eC8a59&|HK6DzHlS zXZYJup;jr{YpC)ojk`S0qVI1^WiXZI^%|DrVD9r+g*?~|=3X336hn_@QnE5B-=ZM5 z6Os+~C=JGx(s+P}v6mHkQ6vYtULMg4W%{}UGjg<@mOSr*#8aewl<(tYt3uZ!gxF6S zb;uZfHIAW&z8=NUU^?DL&xO%GBI@G=`+*+&flx+48SUNipY4VJg!oVQz;B`z^KX#9 zD)Vz)b)0Sdd^@TsZ`W8XoTU~@AtOTR#d0o=g~)h;O-7!^Rxc;lxmG#J(rf-D>-Fsv Yv_Ff(&HM1}zrlM;Qvd(} diff --git a/EchoServer.java b/EchoServer.java index 026394f3..0730fcf8 100644 --- a/EchoServer.java +++ b/EchoServer.java @@ -3,9 +3,11 @@ // license found at www.lloseng.com +import java.io.*; import client.ChatClient; import ocsf.server.*; + /** * This class overrides some of the methods in the abstract * superclass in order to give more functionality to the server. @@ -41,6 +43,14 @@ public class EchoServer extends AbstractServer public EchoServer(int port) { super(port); + + try{ + listen(); //Start listening for connections + } + catch (Exception ex){ + System.out.println("ERROR - Could not listen for clients!"); + } + } @@ -52,21 +62,74 @@ public EchoServer(int port) * @param msg The message received from the client. * @param client The connection from which the message originated. */ - public void handleMessageFromClient(Object msg, ConnectionToClient client){ - System.out.println("Message received: " + msg + " from " + client); - String msgStr=(String)msg; - if(msgStr.startsWith("#login")) { - String loginID=""; - client.setInfo(key, loginID); - } - else { - this.sendToAllClients(msg); - } + public void handleMessageFromClient(Object msg, ConnectionToClient client) { + System.out.println("Message received: " + msg + " from " + client); + String msgStr=(String)msg; + if(msgStr.startsWith("#login")) { + String loginID=""; + client.setInfo(key, loginID); + } + else { + this.sendToAllClients(msg); + } + + + String message = msg.toString(); + if (message.startsWith("#")) { + String[] params = message.substring(1).split(" "); + if (params[0].equalsIgnoreCase("login") && params.length > 1) { + if (client.getInfo("username") == null) { + client.setInfo("username", params[1]); + } else { + try { + client.sendToClient(("Your username has already been set!")); + } catch (IOException e) { + //error sending + } + } + } + } else { + if (client.getInfo("username") == null) { + try { + client.sendToClient(("Please set a username before messaging the server!")); + client.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } else { + System.out.println("Message received: " + msg + " from " + + client.getInfo("username")); + this.sendToAllClients((client.getInfo("username") + " > " + message)); + } + } } + + /*if you want to read the information saved in the client we do client.getId(key) for return the login id*/ + + + protected void kickAllClients(){ + Thread [] clientThreadList = getClientConnections(); + for(int i=0; iW+7!DX1MTWr$Y;WP1KW{fy>_!|1 z`ESaoddR>ld?0eD`!$AW_WT7W6x|LRID#3z63I>-rLGm%vAr;}>bP!3P~w$Zx2{&Kg5ZoXDZd68~Av zF_-_LT3sGPJR8`dxP>_CJQp44YqV>1zd^N7WK}!d$X0kIx`TblZ$zhZpD?7unw<%x zWtmzz$ONHZuiND7NnAGYDL&(WMlY@Th#*QYWplpJcORYkZR+<(=36lDP*FjeRud|% zyAVSW21-a`7+a~bXJaFt!ZylC0zK#@(?s+%MT(62&`&KyElLV1;m;sLt3kC%n2Mxr z%HKoMYT?-*v6DZF6(@F4FM2@KtbFwsT znal0IQhc9a`w}Wz=J_X~{(qou%M1wm0=i{hpy0$E8Y4$zjY6mA#_z|!9$A$hjM3a1 z9=MMq;f4vlH+`7w=;)c0Yfl$B@&Uh@*s5L>_wik#Fz^vBweMku^u^64r8^%>cOpMv pjXz2ZC$8Ws(HQ-h!+I(~)~GWQJE|W@i(VQOVLXU(jZy{I{{~5)0vrGU delta 1104 zcmY*XOH&kA6#i~c&-BnX0*w=q$3PsO)5?&CMp0g(5EOz6Dk{c|GtDrh>BgA`f-g)^ zmX>-~#43}bD$LT-vL=rO+f-#0|A3X0<<@_Y$GJUIsGGj$obNl|x%WH$d+5iI`p3V& zZ35`V>I3z%)YSUm=Id&C+R3^M`tVGAAs(~hb}BaJX3}=*5MO0I;SUi}u$!U$Ej)T< z#!R>x8qvgGvBstrv?*w1C`~xCvyL6>pN_jj0~(?*7?fl>J7>k0_!DU-@0U88Iv7|) z#mD$m!6)zO7RGAWhy8qAY6~3Da1aK6A?>I-q~S2?8MLfvC&!&JGqYf3g6QV|NL_NT zhCbfy>#H1O@JFuBr(GdGq~SPD@Q1#LF+yV!R@$`PhQ+jHH3&)&qjb55<)oacDHRN- zG@Qm5|I1f(;EaZ|2r-l;EGKLBJGM>lO*?i8CU8N)`S)+Vly%Kn4Hq%VJLCrTB|jy% z1ir!*1#x~$t}0J>Hq4Qwu4M;d@(sDYG{q1Q!_!nr^S|Xr_B9Xqjj~yWU?gk0Vktp5 zyw|_G?rO0%=VYjs6hFs8gAoTUJAFW|qlo~$Ep+=mYIaH1a5xt8f zBt-M*;rEr3%SXI>RMSoSag-#Ekwg%_ia`Zx8RhhE6b7)3;($#9Rz^ge^x{QBpIUyGzFlC`9yUpxdJbni`ixf^ zGIXmr*AqV|*tQ3?8~WV4Q1~rWY3Lb(zK3e)E(PbF(lZ*-i7u!}g1-!|*DQD*bkn;F z9#~t^G5)AzSM4G~MUy+JS!_-7p8k#4#-Am7eAjTD|5p-HZ+Kq#e!(psRy$h0!wRt( j`nLKfDHHoFEf^yYd)#^T@CU+o1(L8GM7l$%guDL(16J;L diff --git a/client/ChatClient.java b/client/ChatClient.java index fdb2e090..9d8b3f45 100644 --- a/client/ChatClient.java +++ b/client/ChatClient.java @@ -39,7 +39,7 @@ public class ChatClient extends AbstractClient * @param clientUI The interface type variable. */ - public ChatClient(String host, int port, ChatIF clientUI) + public ChatClient(String loginID, String host, int port, ChatIF clientUI) throws IOException { super(host, port); //Call the superclass constructor From 6eb3723f468c4554f8a5568a6f3680d14cf0e56f Mon Sep 17 00:00:00 2001 From: AstridMatagne <113950313+AstridMatagne@users.noreply.github.com> Date: Sun, 6 Nov 2022 22:18:22 -0500 Subject: [PATCH 8/9] AstridMatagne --- .classpath | 7 ++++++- .gitignore | 1 + ServerConsoleTest.java | 12 ++++++++++++ client/ChatClient.class | Bin 2759 -> 3203 bytes client/ChatClient.java | 10 +++++++--- 5 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 ServerConsoleTest.java diff --git a/.classpath b/.classpath index f9cc034d..2c592c7f 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,12 @@ - + + + + + + diff --git a/.gitignore b/.gitignore index 13a34b62..c57768e3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /ClientConsole.class /EchoServer.class /ServerConsole.class +/ServerConsoleTest.class diff --git a/ServerConsoleTest.java b/ServerConsoleTest.java new file mode 100644 index 00000000..8745fba3 --- /dev/null +++ b/ServerConsoleTest.java @@ -0,0 +1,12 @@ +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class ServerConsoleTest { + + @Test + void test() { + fail("Not yet implemented"); + } + +} diff --git a/client/ChatClient.class b/client/ChatClient.class index 2307ec5f6becc235ac36a01003f215ba139fb1cf..b231034b5b061a5746fd63d4a50d7845b523730d 100644 GIT binary patch delta 1012 zcmZ`&OHUJF6g^)bbQlI~CTWohp<2Y!VpuCej3y!kqJ&7q7_|uvDPoK5@RCR6rGkpe zfKpUcK)P~)n5mCMcWPW1P23p&fr&0mbcxIE5vC$eA!4Q=YLotJ`C8+F=#1s)`bV%q#DPb`Kv!R8iiC~FIZTgn=gXeivW zrz6zX9E=J$!yp}uL=`vD-AcqQq6>WzY$)Z?fP^^CGGqkW+k@d|hV9;3qf|UytGr|l zOG9hr%Xy6=0mBS}hZ?j~Bkp@t!a1BbeDmfEW^YL~cRwa!92X7uM#kc;E@|X-E^{vv z4EY4qwpRZ8g~|n7<<01W@MZ!g8SHyIqS0VjadX5Sin#?$sc~yDn^BjnRqU4f)mo4} zC*clnYzcOUl$FAa&#b{z3kz8StMJQJ8mbd;_#VM7*FC{D6MPzWCs~nSKA@+(bgxf9 zq{pEo%YKN%@-Yo3lFU@c;~_E;-82kC-Ff~oYWJq{qiZj%nqYW4%bBV)B_(u zr&CY}dWNnhxhI8Q4r%DuFsO6J{PNI$cvB}P(T!R3Ud!OVhY2eLOgYitm+T>JFXdHDX9$R{fdjsJN-?%#U$9 zt>!uz_BY8+GdS?CVBh$6ef0>qU=`gxrROek#7=ytxxrIu{6AB=kN6ERp4; NIwx+i%~QsNg$4OH(rymr4|k|BbGg^_Jag!F+2OQp+ak@x&r-8(X{zyq%Flto^$ z#9LN)N0kPveB};Vsm_y#P9(KmVk2+P3?_3~jn|Vo=HMl}kJ`7p4aK~fPG;3r)9r%%nAnuP{F1$V{1ahaaxuF@tNo&fqV Date: Sun, 6 Nov 2022 23:00:55 -0500 Subject: [PATCH 9/9] Delete ServerConsoleTest.java --- ServerConsoleTest.java | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 ServerConsoleTest.java diff --git a/ServerConsoleTest.java b/ServerConsoleTest.java deleted file mode 100644 index 8745fba3..00000000 --- a/ServerConsoleTest.java +++ /dev/null @@ -1,12 +0,0 @@ -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -class ServerConsoleTest { - - @Test - void test() { - fail("Not yet implemented"); - } - -}