From 5997873d6fb70a759018cf6e14aa4a7c82fe1d3e Mon Sep 17 00:00:00 2001 From: moukhlis Date: Mon, 30 Nov 2020 20:16:02 +0100 Subject: [PATCH] Fin de connexion et deconnexion --- Implementation/src/ChatApp.class | Bin 3083 -> 3821 bytes Implementation/src/ChatApp.java | 39 +++++++++--- Implementation/src/ListUtilisateurs.class | Bin 2103 -> 2140 bytes Implementation/src/ListUtilisateurs.java | 6 +- Implementation/src/Runner.class | Bin 579 -> 579 bytes Implementation/src/RunnerUDP.class | Bin 3593 -> 3834 bytes Implementation/src/UDPEchange.class | Bin 1823 -> 2802 bytes Implementation/src/UDPEchange.java | 70 +++++++++++++++++++++- 8 files changed, 102 insertions(+), 13 deletions(-) diff --git a/Implementation/src/ChatApp.class b/Implementation/src/ChatApp.class index 02dee825bb0d4d19fb9da85b7934f761efc6bb4f..1f60f6106ebf96d55922a4f2a0704b893b1b9a68 100644 GIT binary patch literal 3821 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 KpW$ ListPort = new ArrayList(); + + + + + + + public static ArrayList getListPort() { + return ListPort; + } + /* ChatApp est associé à un utilisateur */ private Utilisateur me; @@ -52,8 +63,10 @@ public class ChatApp { InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER // Message que l'on envoie à tous les utilisateurs actifs String broadcastMessage = "Modification Pseudo\n" + this.getMe().getPseudo() + "\n" + nouveau + "\n"; - Integer port = 1234 ; - UDPEchange.connexion(broadcastAdress,broadcastMessage, port); + for(Integer p : ListPort ) { + Integer port = p ; + UDPEchange.connexion(broadcastAdress,broadcastMessage, port); + } } @@ -67,8 +80,10 @@ public class ChatApp { InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER // Message que l'on envoie à tous les utilisateurs actifs String broadcastMessage = "Connexion\n" + this.getMe().toString() ; - Integer port = 1234 ; - UDPEchange.connexion(broadcastAdress,broadcastMessage, port); + for(Integer p : ListPort ) { + Integer port = p ; + UDPEchange.connexion(broadcastAdress,broadcastMessage, p); + } } /** @@ -81,21 +96,26 @@ public class ChatApp { InetAddress broadcastAdress = InetAddress.getLoopbackAddress(); // A MODIFIER // Message que l'on envoie à tous les utilisateurs actifs String broadcastMessage = "Deconnexion\n" + this.getMe().toString() ; - Integer port = 1234 ; - UDPEchange.connexion(broadcastAdress,broadcastMessage, port); + for(Integer p : ListPort ) { + Integer port = p ; + UDPEchange.connexion(broadcastAdress,broadcastMessage, port); + } } public static void main (String[] args) throws IOException { //Integer p = 2345 ; ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ; - + ListPort.add(1234); + ListPort.add(3000); + ListPort.add(4000); + ExecutorService exec = Executors.newFixedThreadPool(1000); + exec.submit(new Runner(app)); try { app.connexion(); } catch (IOException e) { e.printStackTrace(); } - ExecutorService exec = Executors.newFixedThreadPool(1000); - exec.submit(new Runner(app)); + if (app.getMe().getPort() == 4000) { try { Thread.sleep(2000); @@ -124,6 +144,7 @@ public class ChatApp { public ListUtilisateurs getActifUsers() { return actifUsers; } + } class Runner implements Runnable { ChatApp app ; diff --git a/Implementation/src/ListUtilisateurs.class b/Implementation/src/ListUtilisateurs.class index 1e909132811e9668d1dbf3bcacb21e362a6c5501..184b6698780150fa334194fb9e108118f8c6200f 100644 GIT binary patch delta 1170 zcmZ8gOHWfl7(LT_;nv%ZQ<1JH))W!EFG z2YD8DNbE$ufIYl8Ju|%!U5qWwt0__Cv{5Lr3tn~K3~hCx7`rW$NR+~--iv|~IW{*p z6N}zDADvl>2^clC5f?0!OH`n8`B_D7mBe0DFMrx=*TQchAW;Y3a?moZ?X_@3;wUNwa_3{Sb9Z7c*f=K9 zsUnUtyBj?gdL@pdPu+7giGKCQ5wcGqY+*p+GzK3U?WG=^l^DXHz?OyB;^0DTX<|-K z8J0MY5jAS~#07QN(7+cZE+Jn%H6qTT#pw9WaP+qNVT4qd*{433Ejun#N(Zj+)&e=m z<$6`QbIRk_xW5esR|_Vb*p4l%ak}o{?lGQn@VUz$NWh&yK>|f9kp7o&aieVHIcpAF zo0=F@{hr4aE#VCG zK#<6B4c)-EG<3V^HHqAwx@3WF^qL7A9x+qr66jb>eyn5h3G5f>$~%$3$*cf=xQJ0l zq#()}nIIa_ibjMOnhqR57o*XS7Mx{Xv^Z{3 zx=nx44QPI}g<5&DbiF1?p7HD2xz*&lpTx5?E9kQJbvFss#L-Q5J!I62BRIkBetw<& zSI_3Op8UTu)MiOdyV#VW_Q%Astcd~bVv3kkt4<%kY8C&pGLB(-IYKW->0<=-xcD!2 zMH;&^9a&=DAhwQcqc&ia24py#3S@#*#Fw<2VYX0+2%A=u-?Iv&Lo`kuCaRg8Njfz} Wudb(%Z8$dJrXw4Sm|#Ii@A_|1a?Bc97z}H#{DqzKG0kMHl>5DGO1=l9Kc3+tKANmLA z_YPler;UA?>GZQR{Ry4vO#g*rOP`x;$i`tZb93+AbI$Xe=bU?9{`c$e0Ip&yi4JsX zi0L?l!veie%x!bBV%l4i_cor$k}q(0+OjSGxU8cqvzMbb=S1n=rNgR=sOE$J_NGAKI&?cN37wd^fs zJBEygtd4P&a76!x0ri((1!l!dVgi#I&gnRh3j%$uLd`i&MVdDGZ=01s-rH0ntcNPp znT8ew8^I-obXi~|y%6D?KiGT%S9H9u1k*PfC`ARKq@U7}SBww4vg&N}steb2Tvtt$ zGB-D^(qrkW`pXE4m%t2WHO%R_i4WSdeMZwNm3IQ_A9jZ2OfFL;pHfJ(nvY{%;L3`$ zebcwLrBRlKD}BqAt`XRV!+!M*+p&$3WBbw$jIwEaM#VJPe?AF*h&vkY>i7r?%^q$C zpn^{oT!mV;^;}r1v7!=iNyj}EA>lPkt8%}u<6{&UfgP*TW^!)`T#RE?z^H3N>Yfoq zUWQSB7oIU?D2O#3pQ!GM`%be95(R6^HvPbr0;7=z-+zG9ZRNb4XVczv%CtVRVA*mh zsBTDi#oVayrhC6B8%&3z@2i<>TR8d@e6#fBqWQEL!wa5LtZJjk?2oEbwl=Ni@$3O1 zBagTVQY5`?>DC=rZL7p*EO3zTLG8(DQg8ydBENsrTsf8a z|A40sth0xO8hTtm<;^*CatHKgUO;4igZAJB5y<&(nPJ-5~c<6nG z5fw@@^CObk8hY1Serm)rE&k_Ak0MOpx&fGVUQ| z6C0sU--MLs-(-6+!Zxeujn&ErYd+bWVT;HqgBDIDq)>hTuII%{-rd0vyS&!#RBWN zLb-~RX{{Z4qyf$G8bUuIv}(umO8ph8A5vJzhNV2tO{0{HG@%Sd8tv}=)5^cmKo6nk delta 50 zcmX@ia+qbqJx0zZ1{Q{922O^S$`~Uy| diff --git a/Implementation/src/RunnerUDP.class b/Implementation/src/RunnerUDP.class index 5a2c750cd237a86783a72cc57cd690f176311919..2f287a6e24b5d5a87acbd6770d1a3af4dfffc851 100644 GIT binary patch delta 1899 zcmZuyX>e0j6#mZ3_VV(8@~T4%6aom8QcwyC6kN*Ig0xZsihx2$U)!)GHA^W7Mkr+$ zkjqw7v}^_UvZN*KP^=&-#b1j2aTu2wf2uS1Lp(1@X%#x1bML#~ch3FJx%b>`==pbs za_yhkIRK;aU4v3bbNgns{}t-Npu0?W26RujeKkwQFhWOO2dv{%#&7~D3VP#76;ENL zXrvL{MicDg{XU;w<@NgvY>bMrcv?tOKYCUSkOn#OFwTbYDkfl}m@Q4|mru~9>lJ=q zP;6ERb!)vaOyJmOc=MAF4jbDr!%nTm3F#Zq&he7CX3Viil^BUsAxP@zufk~wJV z%#e4nH|P%O;lLOLd8knF8j1;W$nOdTyuLCG5`sqT5Mh*9C8dg5YpU>>93sVHXQ7oU zmZD1ZvGnJUyHoU1~6;_LtmU*;B+_t3ATJe{~X?0<}iVdQt)fw4D z==wlKWV}T%hXP?;##Tbgw4fd?@jFZOg>Gj>z#EkDHm}|QFkHc*mn2jg$I_tU7<%!23$_WAaf0BOpnKXb zpbb$W$#tDCD7c7AHe5Citywh4&3(Th*r?RKIH)T!z9g1z)RyPh2ojNu>teTk0DUXY z*|W^8gkIvJy_ZlFjZTUTCEd~pLX#MyIES3#{?cG(TgJ8=c6iYl3mK2WYOnxP3>Kb4 zDiG_Hz7cI`6zRv%b#P+Pp5Sq?mJ`JYQ%+&FHY$qTTI^zi_RM|6oYREoinK|&=ByLw z6h*<1D2k$(9>uJ^=w@(VWp27ThWS9QxgNcZwGv)y=a(ArLPQu(Plj0(g+GRX;lcsK z>4sg_gq8K^lxr~})U-#4VqLbjF)l7YA=jLvZH|8rOnh77B0FrDoU&&foYRi)_#YC*o}xB1hIiW2>1w{&gm>c!DY=$(OBDO- zBN+Y=ckNJH2_E8;2x}2pfpu7qjo5}wT&vC8xLbLf?Yz-0-b&yqcA^z~ zaEtr<4))^@93bEzIdF&`#bHXr5pv=vW#Tvu#(oNBJlPO9UwqKZ;maQL{2az$;$FUEE!WGFZh= z)Kq-^f(%1VQnSKrLoy1p>|<)G>1X?~rvE@^lFq#>?P$&Hocr$cocEmPocFx%o%D`L z%J+8%hXBmQcl}B)siY{#z$_Jc$QQD0cG?pJcWE#X&|8dPz~ttrD8O7%VVgolqS-dX zQ;er%Jgs6rO2h?Q*_2X(R-rcr17STgu~We!ES9lE#WQ$Tq}lUb#duCdIeenRKGoyL zG8xNNRA7Z@w=egs!t*j#t9St~id*(co@o8Tk3BEc1rkP)cUU_;Q1 z-AE`9zt~bmhMX#f>>jb!;bx&B6=6igX2(?i)2!lEw1^(Zqn_8XMaCN{TG1wcbX3t+ zk?WjD?P9Sr)9J?!6+1}_EaiN2d>I<$j)*H3e5$xIrl;y`k6^BqlNaB)4UCNDcM1vh%vA_`-M^zldaZx4Dbw<&pqFeOH4@^2qnBc2! zYOXfInWYB=^#Ryu%65T`|rxIhq}VH(PrwhMD#}Uye3Ah9|pl>@rfc z!hablZvgX_Y6}XbtSd;0VPS3zWic#`VP!YcOy8H-*DDQjMifeY$S|?Bj3xYQOnSXZ zd*e~+V%RtsMZm;3;AXFBn+EV&ACd|kW`u2t2r+EW(RNwllHx%vXpaS5ibJD?IPyld zbz#jtxRjUR_r{s%C?xTg153x~L3AcWrAWUH;IJi2DRg)pF`Vc_{(XVX-P&7Yb^Onk zxWA?OZA-JqtngHnOU%)FEo4sIY4pSGITK$cG@iTPr6xx^Z*86!XU2T_#5h1d--kY2 z;qi-75tWgTzX58ct%&mM@U%p69W!}c47gCw57|acLjxY?r=WmOW zj&t-U`si<*M?aTPh2#;|x^QP51ITI}p>i;k1ol`h9GI tbdR5x&b_?Md2INY3kDwK8}@dD!USaMAzQMQf{sR*ghs6K@ diff --git a/Implementation/src/UDPEchange.class b/Implementation/src/UDPEchange.class index 6643f065208e65a06b809abf901fff8a54e21373..729a13f2a5cf13faca4ec489305169e3f84f5e6f 100644 GIT binary patch literal 2802 zcmcguX;%|x6n+L0Cd5$$aY02<(IzOS)mCd_v8*+gO~X>8whqbLFc46-whw;dI0+$_EEHER>BilQJsD_mo zC9f{o75YLdg3}7xJJ$Y&NRXZvZNgl%mc`n7M--3YjEb`w9>+NaJA4+_M^m5{W$c2< zvMF<>l-+}JFs&W&1DK|ws0E~{)a&y27ajjW*RMlh=4 zvW6?jklEf@-R&+GS$2wdh(c>1Y2!TJaCBFAHXX*nhMd&!45k!psoJAEoklHN>R=t$ zWd+k&#k5rHv$D%5Ocl>5*t6OXK}Yv5Wku07EHjF0xUNB$GHmc`o^jbrW44|ZO&lQ? zWC!GAJSJKvJ0Os5Uc;=Ex@wE8FcyW1xhg58N2(4ma6JO5cWXtFbnywm@0-Cgc~syQxbRdgYPf+VR{nuiEZ2e%9B*d9AbY2)tYHtid@cDdgbku`JhdZM`@o+*vE-V{Cb3D7PAlk}Xv`kCc_7-%< z5sr%Qsaaos)n{#lQ^gOJd9$f0H5!nDLs(`9%D)ij9Y5o|zRb5)-WA@%9V<|N;e&!# zc$M40Hq_%)yhcZ9dYh|tych36omxTtaA&B5=#>%+(B>UwW%*yW>jh1G{E~>R%fu4=eHt) z1AID&9sKsj2<;>e;}nh{iFS_Tqa1a|aGjseJa;X`@jAUEY=d~-z?*y`9%YwL1F)zJ zHrD=i8yANpFy=R0!kCZY>fkLzh6&*L#t?pw3TYq*3_WSCuz&wUTJGv70OJ4=gm zv^h_!B=M$*@d@JT;(s^2dg(Vn&pr%_ksJIsT z8+%o}eV?N^yt=~$l?&WA>Uie6t2O_*T=V%#&HvAGpW+Wh@Pij2%x$<#@K*>v!=E-| z{Mj*1*b{u4#54;&gDK3Bg0)iD;yrrT;C+0+doybBAq)SxfBn+GevNOr6Xoi6xQQRp F@-HdEzRLgr delta 764 zcmY+COHWf#5XXO~y|<^_v?TN!v7)xMS;@HZ$j(`Okm;Gjo2Nc^$Am{(64|jIq6MeOG>q zL54IDAH$3|{jO+WjHqVZ$8{zY?M}(v=49OQUCopalWBz!N_5}W%qUv7ayz-cqFwD< zDdo5A>fDRGU9J{NMT;15A9HvVjpa(ASY4^+^4qJGT;8^5;bxs`Uf~IC%m|rI%=2Q=uB^qEEtbgC$yOAXomc9d^TqH7 z))0N`KJJiJbV&}IYSE0;CToJP-Jii_OEB~t+dC2StC_vF?l zUWqra9H92)ptvu#9)12RQvWzYs38G#+DXcjj%c;)#?L-V@RIWqeSaq?!cl=p|H^?r|%C34DVnj;2 zPTGq~YtS#Z0YMB2W<*dCTIG+NXH-OwOU8smrX?~d@~6bk$SP*ZOXe_(=CNeBHBU5J zvxd^djGvgAr^mu4{xl*FS{@{x^hmMIKl8Lt=NWPQ*0tFG^K6&@0`oG@gh*YG2`N; diff --git a/Implementation/src/UDPEchange.java b/Implementation/src/UDPEchange.java index d9fad55..2fc7c7b 100644 --- a/Implementation/src/UDPEchange.java +++ b/Implementation/src/UDPEchange.java @@ -32,7 +32,12 @@ public class UDPEchange { DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLoopbackAddress(), port ); socket.send(packet); socket.close(); + System.out.println("***********Message envoye***********"); + System.out.println("Dest Ip: " + broadcastAdress.toString()); + System.out.println("Dest port: " + port.toString()); + System.out.println("Contenu: "); System.out.println(broadcastMessage); + System.out.println("************************************"); } /** @@ -49,11 +54,12 @@ public class UDPEchange { DatagramSocket socket = null; ExecutorService exec = Executors.newFixedThreadPool(1000); try { - socket = new DatagramSocket(1234); + socket = new DatagramSocket(app.getMe().getPort()); } catch (SocketException e1) { e1.printStackTrace(); } byte buffer[] = new byte[1024]; + System.out.println("Ecoute sur le port: "+app.getMe().getPort().toString()); while(true) { DatagramPacket data = new DatagramPacket(buffer,buffer.length); @@ -61,8 +67,9 @@ public class UDPEchange { socket.receive(data); } catch (IOException e) { e.printStackTrace(); - } + } // Un thread est lancé à chaque reception d'un message + System.out.println("Message recu!"); exec.submit(new RunnerUDP(data,app)); } } @@ -74,7 +81,12 @@ public class UDPEchange { DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLoopbackAddress(), port ); socket.send(packet); socket.close(); + System.out.println("***********Message envoye***********"); + System.out.println("Dest Ip: " + broadcastAdress.toString()); + System.out.println("Dest port: " + port.toString()); + System.out.println("Contenu: "); System.out.println(broadcastMessage); + System.out.println("************************************"); } } @@ -104,8 +116,16 @@ class RunnerUDP implements Runnable { public void run() { System.out.println("Thread started"); String received = new String(data.getData(), 0, data.getLength()); + System.out.println("***********Message recu***********"); System.out.println(received); + System.out.println("**********************************"); String Type = received.split("\n")[0]; + + //**************************************** + //***************************************** + //Demande de connexion + //**************************************** + //**************************************** if (Type.equals("Connexion")) { // un utilisateur vient d'arriver sur le reseau System.out.println("Reception d'une demande de connexion"); Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[1]); @@ -121,6 +141,7 @@ class RunnerUDP implements Runnable { } reponse += app.getMe().toString(); + try { UDPEchange.envoiUnicast(u.getIp(),reponse,u.getPort()); }catch(IOException e) @@ -130,9 +151,31 @@ class RunnerUDP implements Runnable { ( app.getActifUsers() ).afficherListeUtilisateurs(); } + //**************************************** + //***************************************** + //Reponse d'une connexion + //**************************************** + //**************************************** + if (Type.equals("Reponse Connexion")) { // Un utilisateur te repond suite à ta demande de connexion - ( app.getActifUsers() ).afficherListeUtilisateurs(); + + if((received.split("\n")[1]).equals("true")) { + Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[2]); + app.getActifUsers().addList(u); + app.getActifUsers().afficherListeUtilisateurs(); + } + else { + System.out.println("Pseudo deja pris"); + System.out.println("Connexion echoue"); + } } + + //**************************************** + //***************************************** + //Demande de modification d'un pseudo + //**************************************** + //**************************************** + if (Type.equals("Modification Pseudo")) { if(( app.getActifUsers() ).verifierUnicite(received.split("\n")[2])) { ( app.getActifUsers() ).modifierList(received.split("\n")[1],received.split("\n")[2]); @@ -155,14 +198,35 @@ class RunnerUDP implements Runnable { } ( app.getActifUsers() ).afficherListeUtilisateurs(); } + //**************************************** + //***************************************** + //Mauvais choix d'un pseudo + //**************************************** + //**************************************** + + if (Type.equals("Mauvais Choix Pseudo")) { System.out.println("Ce choix de pseudo est déjà pris il te faut en choisir un autre"); } + + //**************************************** + //***************************************** + //Bon choix d'un pseudo + //**************************************** + //**************************************** + if (Type.equals("Bon Choix Pseudo")) { ( app.getActifUsers() ).supprimerList(app.getMe()); app.getMe().setPseudo(received.split("\n")[1]); ( app.getActifUsers() ).addList(app.getMe()); } + + //**************************************** + //***************************************** + //Demande d'une deconnexion + //**************************************** + //**************************************** + if (Type.equals("Deconnexion")) { ( app.getActifUsers() ).supprimerList(Utilisateur.stringToUtilisateur(received.split("\n")[1])); }