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-n2LD}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$sYC>o+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)JYZnnenrI{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&0mbcx25jPE^UeLvJ?GvtbML%z4Cje&R-Zlx
zP>IE5vC$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$FAab{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");
- }
-
-}