From 77f2746e1791e1616ff43f6e0a702c223868236f Mon Sep 17 00:00:00 2001 From: Alexandre Gonzalvez Date: Mon, 30 Nov 2020 18:29:22 +0100 Subject: [PATCH] Ajout des utilisateurs distants dans une liste + les notifier + changement de pseudo --- Application/Clavardage/bin/.gitignore | 1 + Application/Clavardage/bin/User.class | Bin 4959 -> 6590 bytes .../Clavardage/bin/UserListeningThread.class | Bin 2320 -> 2445 bytes Application/Clavardage/src/RemoteUser.java | 58 ++++++++++++++++ Application/Clavardage/src/User.java | 62 +++++++++++++++++- .../Clavardage/src/UserListeningThread.java | 4 +- RemoteSystemsTempFiles/.project | 12 ++++ 7 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 Application/Clavardage/bin/.gitignore create mode 100644 Application/Clavardage/src/RemoteUser.java create mode 100644 RemoteSystemsTempFiles/.project diff --git a/Application/Clavardage/bin/.gitignore b/Application/Clavardage/bin/.gitignore new file mode 100644 index 0000000..2d535ad --- /dev/null +++ b/Application/Clavardage/bin/.gitignore @@ -0,0 +1 @@ +/RemoteUser.class diff --git a/Application/Clavardage/bin/User.class b/Application/Clavardage/bin/User.class index f74a1c214b9637025c1ddf6bb34a4dc802b7f5ab..e4996a5362d5053368d3e90370704de46788db66 100644 GIT binary patch literal 6590 zcmai231Ae}8U9}OnBC0;BniP4gaH+kkPt*lb)iuLSkopU8VE#GI@ukj+4WJ4RTVzsTUt-ZAOecSuKEdBnO-OVO0%CR&1-uwUeAK(A| z@9k6n`}89KR;i5|sucWNa#mJ@U*Uw^=3cWcW!gh+n+A7VaYrFwCK8>!3JqQEoNYO6 zo%~prNMx;CZjC}Ple0z=X@y#Eg)80XWRvy~X9IR7ouwMpDXQX5awp#}Qka#shSQEE zJ9i~>Trk&@9&wVXwsqO8IV!_c5bjG3*`_m+wG>XNv}SGBg(X#M+9}bHbJ7`+wrtw4 zWkc`gU0KUaDAbi1*pW`BEYlYI*Cy?x)6Ot7b~g1ZL^fU#w=zyLZRa%1qm=7+GTqj> zsWijI>(dD<0v}G&QHS{ozQ(404JQ}ZPxm8&1vn`T1w%&-W<{_Br)oGwVa`;*3l`}( z4NDcYy=H2}+QeuzG+xwH!En*msACRlBWOm8hGh!%l~Sam70VU$A?5z<%|h62Ev`o-RJ zb%YU#@U26~ddWsOXF0ttE@ghBj%w%{Ud^3~h;zZ=AtMBWvz|aPN~kd$7c&u@hu2Di zyAwV>uD@qEFOrRye7# z({pQPB1CHg`gLp-t+U-Q^f_jH&*rQdw=@hC^_LY~$4D}ju(E=P?K&>TB?=)Y?Zt{N z7IR)Eu_l5YFg3hxdY0Yt6(|lWEG>83qlGo)h%BTcf^A5MQ|%#0k;i0UmyRTMv&hU$ z#wy!NqkXW3x3eJZAgiVVTA=O&*LtXET?s72!(JNa}aZ^9K*Z~+cglPFHS@+ z11X8vfxS8|#}y0|3#4O|a>4{n+dE|LN*%AqRWv_k*+b4Qx5_&s$l;CR=$i=e#_b)) z$sfr?^898U*Wg;}%(?zADEKegE`q|dg)q{vk19)`*<$ap)0f*)uw~3MyDMp1JtM<| zR(7*Fm?ACKx^>-eW|Q*0Fz9!7CFx4ggDCUCg^Q+;R!KJtu}Ykr>&ldB!7CC@)?9Ad z4#_pXiw%P6suNR?R)|h1FFNL-ostD|pH8A24-%YiSi)oyFANnG6(U3v+zRM6GX*aj ziq%sNX<>26CVP~0t`NDP@ER?Pet8!Yi7+KR%J8Inyv8Ncg;y<^TjzB!l0AEvtJoXx zlcbrx4;LBTrT@OTY1>v-c=RJWK8kx7-=q+k7b%H`of#<-W(523F@e>+!p;?!H1&t@ zaTe-E+p)5Sos93X&0))6rR~T4IzHjnyKPqygbWiH|9O`Kl zlh>EtoE)}@uMob#64+`c*^JUzBjdIQZ(~#1y|H}xayF3|zNq6%(s}|e=Z5fQZp68= zKSBY|NUpw03=0K#wf=P--;i3@vR2$m?xj6BJgeh5p%;ztlDZID`L>9DhZ|5-BzNF@ zI=+t|a3q&WB}rHnGqBwYNjcO*_z`=9cK|X**o+MO=)n+vLbJl1y+(`?{uv`2=4da^ zVeY^$c*Y4Ayq5*PB0024%lM6s=kZ&w5;{hE2rY%?<3nL)!;0Yd_@jnD6l=h>vy)IA zva&k)lGG;bsaqKwVoZPDLR~>)D-&yNCCrlmf6k3i`yaoO(4~rMnf9m*`>>7@z zhq!v@r+gcR#yQQ+=%|hN9emfc%fC0EAY;Ad)H_xtf@JgI+3uL z3U@@!Q|{6B?>xJz1-d#}Eu>{U#93F!sdU<5tavEs3@JmQvpboy4Aa=nVs9~0rC8Zl&2jW ziW|PDAc_ZvkUEX1ZVai@`DhXsnsn8yct-Y-5~RM$QBy%(VJM_p3A}Z5h4xu=rrcN}i2&a{NBNs1FZMs^a&fs1|@Nq)L_MvA>_Z9(4*^Nj_mB^TyFA{SN>2E4WR8fBS zVbb07@T@UxN}p+HtN;!65JimnyOVp!PfEQ?xad}SJ4fE?Ib~*t7ad%I8Ge7Jfx->Yx}-*|W7 zdkx>XFURJ(t7tb)?j;N6<8mwlV1458{m4 zSLShc^Zap~)11e;X8$-gOyazO+Vd&>n(mf7y8Z1c=AT6GK=WZPI*hgnTp06@ArcEj z19@zj#5S2~%j2RWxO4*XS}TtsS)9k7;=9eE+6+JP$i@Pb$PI|>h zFzSy6^SD~HYf+8b4>3yfu#oY(4qdneuR{Y4V-k<>>BC#-=cSwnJ@+$8v-x)(?~Ds^ zG9?zW%`PH8FF_kl#hF-&v(U(UP7_{@7IfkaYCMxVS7DI%vLVji&MtPC_oqp;<1w6r zC$J80rS_d}MxMm=xPjjoTe&we{!19?8*vkJupZaqZFoE1I`Ia)gPHSD`<1vE@1$je z%<+wQ7e8<3&hMsFfcwHTYzDgsspfp?;I!5aP@>Rom{NF31 z4P4X@t!z}o4vl@&opYgaD?bSc{Ei0r`RsgIK=hOV(J~I(L&bDN^t2KYhp4!i6E6p= ziALbHWjW|!^f%FsUdHGG=Ae%`*vv?8!P&HX121RiW5A8=Dtb@jO0n%M#8$?nBC1MJ z_E9e2M%m{^irAM(`MeN>5>Ea?!B9_QJ3K?o36E}@#QuQ?arXqqx&*}sNNdaTxUYK*C&>2)ir<^b zX@~L{zwOxb&4O|+I>H6QVzrZGFHR5DKI}0SWyDSo{lKS~AJ?WRM%MmX*GhoFKemc(xUwQH^dq%4(OyoQu!6*p`adQS}1mYuL{c7EgJ( znCYkQy@V7yfI2|-?w-NMJ#!Qu3JFQ)2I$TR|BtrJY5S}&YM@m(_G&-5KNg(CQ8t6m z#Yu>3Vv(pWp~hX&h;)MQ#;S{<{vks>w}u^p4T1X< zhkwlBXti%;DgMQYpSlzN7f<}$od`@#G>d%gFS(n4Rb}1~OXef_=OWXOkRgeGOawn>#8;#$7OcmqNn&&;+9fMIYtxhSLz?cu!DPPI% zXz(C2c@sJR78NKU=yrA>aKumEuP1}eCsVB;-K@qPM9l}Vk%iWS{p8CJ6G3;gv)#ka zGX@*?;xZh7gZucC%l*XL1JrzonjXZhM9ZBR=juG~u}AnhNsK*=XW1eDfJapbkEz8t zs@i$&>%-^N#WOL3 z=12rvRi8RR&0$U5#4BMfWp(}xb+)SGTn&8-;zm`^zAjbr9)yoE1hdHYZmVl%C)Ctj z_B;(sG#uqW?zclz4GcVvvGc#wQddkCQ&`%p3TXeq!E=@W7!7+V!LmJ~E4UM{T>NCe zpc~#nZr`MuH?V9$>x7EN{A@gnqW-*^zdA5CQ1zh_((BYB7d2{eojR4MS-?`LQ%g(u z5xKbmk!;*LhE*l3wY;p9$SmJF#al}maqxbv%AgHOS~F>7Wt_!VYuGe(W}lwl3EuOHlI#vO%fBaw*pD9r72*DTX% zkMXf8k;s_Y>@tO#bk@uzY=wGnhkLr$$t0~Iu2x%VJ3}!lCZgg_ax2H16b{LlBer9T z=FVi68??=xGU1V#!^Wt&!R~eJ^oHS#X(SY8mx=DM?UZR)qWQF>m2_6nfk>>WPa(MW z;<%Z1lD3uAa2QXy7ANiY*!t26H?Ou6W)M|q&@l@kg{nwXUl5HrQo|7nv-XFeph?G3 zm`?*oja1HDPy6RaHZ@f+s1^!G>o^oMgE$t)YdB6}PNksfH~|Y3^dZyfwBtrg+)jO7T%n==JXs0iBj-n3ptfS{WOoPK@n8wJm08Uak za=Fvf%j8il$E{k261Rd|dsSHF~gr+R&iIjz*kn*NJ zv3IGCS_Fd}Ez@zDM7cI=Iz28@WPOE>I_Mfsr$wa@ZM3#q_6|$JQI@YmJCl~#of{c6 zGaHP-lqo3d_q_ z!#j(Gk#mx%_TIQ*S!PDyXy_P3oQ5U^4<+2itaPr3yCAl}6#rQ|4Fxl#D9g4q^#wpj z4_RwDW+vI6iFKSu<=9*25HF zTc(^=uyv$y5e2h$lL^Byi*7EckcUb&ExeG`;ULF)9rT!|Pk6wk4f0s^$QYTj#8Bno zA-rmxk+i2$!zBvyN>E>8IL1)M80od++f65kF<@1MMgia z&~YWM@*vPL=9sJpf23)1hpfFv$2GW?1(GtYAwd;sFBZg3yjK*zk98Q?+))7kbk$^6 zG4Tc+H{vGB%$gQS`G_(|75(vSS=Q92;r$G|>#rLVZXoI2j0O>OtB%`H&xjJAz4nIW zh)LQC;DZWB^&3etlU)KqA#vpNa9dlO*!y9z_YOKD_IieWM8{oXn3gf)W^$B@cH(0? z?v_|+1h-fxG5EL~y@yHTQ8DqpVmQmd-jPeD5@sfV``J*=HPdV+1XDPOd+~rAKUGE# z>i8rcq76nm?Z%?@f8fa@$Aau-BI46J9(IB4u+vGi3}7!?BVpT*$8R~f>XHOBF#X6&N{dh*lXYo0HjoTw>Bf|## zHvAq7;8}&bHP7zZ_Ux`OdqGz6`n--W;EP_kC7~|9&Z_1ugMVgUCynJx(m%dDO{#az zAYcR+U(xYZm;K@?ma~Sh75k8zpR%4%H<+=FMBKypY7?~lmO;B!lqrBB+PNK-1`wI5jxlG(VBPp%BRytXm&;pL8iYkJm27bBQaO9T; z>%Mt+aNoQmxbGP_gl{ExE53D(Xc>H%?XI$GVJ=4x^NUDqYo5To=Bj--d>rBCeK=+u zk=@X{9z}EgiFqt)ZXCyw<~*X!{&6hdOKCbK&BaQdUd8jxuJ*%d&up%Q_&l7ejhKfc zFrR;qqwNu1@mg^_I=DaVX~k-+;f(s_?n9~b=*?Q3L95Q>*IDpQQH)Q6Vx4PP8F1ZL z$EO(oL#p%hy`r-5-6i7}jw9xIAl6Uf?1B0&o>|}Bn#Z{ZJG00Q;evuQEp%of^|jKt zHo9^mojD0jSj5@MSjwLS%W;b9)M6%u)|8xDQE*DWNt%2m_o{fV8XM8aFo>gbJV&d< zQH{(}^mPCW3cj}Ut+=zg`Ef)Z;lSs{y~h2x)KxDz=7xfLg-zJZFA}H~-0kDLrn!ZA z-CH^xbic0PnU$^thFW%&9H`-nXizvG7ZhZb8xost$m)uQ@G?um2Lf*oJs03Doy3-b zM{(f<5}lH-A%d+Xk7Uj;S}BC76*mY028xBk~4vKbM3ha}&5OTHP9|&f|JN zOD$S6iJJ!|@PVjS90b_Sw5QM?t!tfC^?Dw+NDOXg40huUkrwiY{7+BdL(y7SfZiIa z&EwA9sEf{!;*IJu|EOs0=iUkIiUvcvL=E>)(j@L3sQ<(Sc87v_?8)O(6dVfHKa$6z z(K^wT=ZE6HeX_5vYEfxtap4Jf!GG|=lkP(G0Sk0}QA?;!K0bX1H2-e+T|;X^H8kr^ zxN1MoO{EBg0(m?a()cjv;Dy`nLY=pD%0~la_#&(JrBKZyOw47tidVFk3qZJql?j~3 zy4}QzI-ele!fL&cEp(7Ss1hU=laLrD9FnZDZCo9}R#==}L=a>tEk}8yxQ?@%*jsPM zCD?^a@c>tz!R2@XS5ViL_!TcnK3uIDag92L_rOzey;_MI)S0}%^}tfwaEr>|Ry9fq zLUuQKKq;1$8grpWwpTfPoiOrYjxzBLe3O1Osx9~yUZD>ssu;eF@2~_&fk+lI2w-CFs9+B8g^=e{G0iYTDb5tV2UI@%?XZ{eQP)to8X z@_#7^F_k~ZwR{R&l{3tehxnnK>h7$_Fu!1Hn@)Aov8Geq-HhfgSHi(m=QSXOUlIie z8?t=5A@@}@ccggR|}94ZKO$52VeP2n=a5t0tia$SC!{ zp1^NAy~*W34E)xAN)*7Iu XD5ly)2=T#x!mN~{@DDzH_~(BBh|^dW diff --git a/Application/Clavardage/bin/UserListeningThread.class b/Application/Clavardage/bin/UserListeningThread.class index 1416ea467aa72364dfa97ffa3d6e8259f51b04bf..8e6ce102655deb6ed75e89728191e16011cf3791 100644 GIT binary patch delta 1024 zcmY+D%X1V}6vlsdW-_5quHuhJy|+b%GF9`rSoZ<0;@Fl|DPpj2+(GL9S)iY6)j!+3f&_Hywl+! zc7;dcTavpS9%eZFBbFK4%Ojc*#hQPtRO`7RVF-o;Q4%+g;wbdAN!2`?ETazlSg)`v zZm_LfZn(a0(vLfgaf3i5JydT5HskEpl)|55?Y6OVz@dyA=Hj=vSyU7%Z!A@frOB`v zU%#v7aFAg|t6}in*>c^YF81?*>kHigGY$>zR#*Zk%t_WH1BY3oo2t)Sv+ut`U8(>bn)xOU}}ULrHN$hSMQ5gQlzDzx;?^Ix*LNuikPUt)Wcfns)v z2Od=2WPPl!#h@5viG{ET^3q#ca}IY8PHm~ z2Y!?|&QYqBF{OBeH&I+ig5#VJ-EL0v77McLu O;h$EA{=~TA)4u`S{qRZv delta 850 zcmYk4-E$OG5XFCYKjzL(#u7p*WW$FRStK!u3q>kbE)XR0Ax1E|E1D?C!VVi?vlDhE zfglo4AfTYpE20lp!4o_NiyFjKDKEZQT7~={{0l-4yztWZ^y%AuPS4ycOXixLzyJUJ z51@~0x1HmOZigN=xeU;uaH?LorBZ2lK@ih#xNPAig%*0)Z-nO0#EK?|ZS2r&SG1UQ zR!iFDEq0n9nX`u2rFqAw!TQsn9)?n zn;*M;!cIjdRtmhyif^+|VHH9z2#aywjtpfEY7QtC9Vt(h^R;rlnlDZVp*QYQ!811! zD{Y4=hc#p7mt@=KBe>#yqH(w$*6I#J)Lh2dps+<{a9T#kr0+5jFKN}hdNmx2_ingo z0`pHQmz#8%qEC?uym}?WGETTmb5cxT)1F>wo#M3Sb2E@`?VI6@!ad;o zHLqOXQ?5;ViezWks6!iHxO~Y{MfzaP4}@>3R2${-qHi9hv*tBrnT7Oyb;+EvZe_Z# z$jFa+XnJ*f=GLyBh&4C4Zie;hncj$vg_Ok2{pke;M_#?d3lT3zZ2gV5?=sx{UPSR3 z*&gxXbLprQn)gbG__SdC%KoesacF^_kr*6}Lp_^Xod4@C#|pYTt0TgjI0ZXvi+()v z4#)EmpZ)xJq&wp5ZIUEpv1N41lX{(v^fOPyJ;{^2DE>!jH6=Sg(;;snM~PRMV+}t^ zeV%T)*~0?8+?N^uvX1{)&m!rXpef#+#Wc&A-~s12k779~E-))h7uUGRB|&{$<}1Dy zy#dlvy)1Wj)8Go<2r5zITjo|tX^ypgM~i&ec@g remoteUserList = new ArrayList(); public Boolean stopListeningUDPThread=false; /* @@ -38,6 +39,29 @@ public class User{ UserListeningThread th = new UserListeningThread("UDP Listening thread",this); th.start(); + //notify_remote_user(); + //ask_change_pseudo(); + boolean wantstochange = true; //A faire avec un bouton dans SWING + if(wantstochange) { + //changePseudo(); + } + + DatagramSocket dgramSocket= null; + try { + dgramSocket= new DatagramSocket(this.nport,this.addIP); + } catch (IOException e) { + e.printStackTrace(); + } + + String toSend = this.addIP.toString()+":"+this.nport+":"+this.pseudo+":test"; + //System.out.println("Message avant envoi " +toSend); + DatagramPacket outPacket= new DatagramPacket(toSend.getBytes(), toSend.length(),this.addIP, 12229); + + try { + dgramSocket.send(outPacket); + } catch (IOException e) { + e.printStackTrace(); + } } /* remoteUser @@ -61,9 +85,11 @@ public class User{ this.actif = true; UserListeningThread th = new UserListeningThread("UDP Listening thread",this); th.start(); + } + public InetAddress getAddIP() { return addIP; } @@ -165,7 +191,7 @@ public class User{ System.out.println("\tn°Port : "+lstresponse[1]); System.out.println("\tpseudo : "+lstresponse[2]); - + this.addRemoteUser(InetAddress.getByName(lstresponse[0].split("/")[1]),Integer.parseInt(lstresponse[1]),lstresponse[2]); valid= (tmpPseudo.compareTo(lstresponse[2])!=0); } @@ -182,9 +208,38 @@ public class User{ return valid; } + public void addRemoteUser(InetAddress remoteUserIP, int remoteUserPort,String remoteUserPseudo) { + RemoteUser tmpRemoteUser = new RemoteUser(remoteUserIP,remoteUserPort,remoteUserPseudo); + int index = this.remoteUserList.indexOf(tmpRemoteUser); + if(index!=-1) { + System.out.println("Mise a jour, l'adresse IP(port) de cet utilisateur est déjà présente :"+remoteUserIP+"("+remoteUserPort+")"); + this.remoteUserList.set(index,tmpRemoteUser); + } + else { + System.out.println("Ajout de l'utilisateur ayant pour IP(port) :"+remoteUserIP+"("+remoteUserPort+")"); + this.remoteUserList.add(tmpRemoteUser); + } + } + // change pseudo + /* +private void changePseudo() throws IOException { //seule différence avec setPseudo c'est qu'on check si on remet pas le même + String oldPseudo = this.pseudo; //Saves the old one for comparison - + Scanner myObj = new Scanner(System.in); // Create a Scanner object + System.out.println("Enter new nickname :"); + String tmpPseudo = myObj.nextLine(); // Read user input + while(!(this.validatePseudo(tmpPseudo)) & tmpPseudo.compareTo(oldPseudo) == 0) { + System.out.println("Enter another nickname :"); + tmpPseudo = myObj.nextLine(); // Read user input + } + + this.pseudo = tmpPseudo; + myObj.close(); + System.out.println("Your new nickname : " + tmpPseudo + " is valid !"); + + //notifyothers(); //jsp comment elle s'appelle +}*/ public static void main(String[] args) throws IOException { @@ -192,6 +247,7 @@ public class User{ User usr2 = new User(12229); + //User usr3 = new User(12229); // Attend une réponse pour fermer l'écoute UDP diff --git a/Application/Clavardage/src/UserListeningThread.java b/Application/Clavardage/src/UserListeningThread.java index e7e5d78..3d1e1b1 100644 --- a/Application/Clavardage/src/UserListeningThread.java +++ b/Application/Clavardage/src/UserListeningThread.java @@ -32,9 +32,9 @@ public class UserListeningThread extends Thread{ e.printStackTrace(); } buffer = inPacket.getData(); - + System.out.println("Listening thread UDP : "+new String(buffer)); - + InetAddress itsIP=inPacket.getAddress(); int itsPort=inPacket.getPort(); diff --git a/RemoteSystemsTempFiles/.project b/RemoteSystemsTempFiles/.project new file mode 100644 index 0000000..5447a64 --- /dev/null +++ b/RemoteSystemsTempFiles/.project @@ -0,0 +1,12 @@ + + + RemoteSystemsTempFiles + + + + + + + org.eclipse.rse.ui.remoteSystemsTempNature + +