From 9b173cd22d450736833bc2af8eeb549e646a3ef3 Mon Sep 17 00:00:00 2001 From: alartigu Date: Wed, 2 Dec 2020 12:07:56 +0100 Subject: [PATCH] Suite echange TCP --- Implementation/src/ChatApp.class | Bin 3878 -> 4156 bytes Implementation/src/ChatApp.java | 26 +++++++++++++++++++- Implementation/src/Historique.class | Bin 0 -> 615 bytes Implementation/src/Historique.java | 30 +++++++++++++++++++++++ Implementation/src/MessageHorodate.class | Bin 0 -> 1534 bytes Implementation/src/MessageHorodate.java | 11 +++++++-- Implementation/src/Runner.class | Bin 371 -> 371 bytes Implementation/src/TCPEchange.java | 30 +++++++++++++++++++---- 8 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 Implementation/src/Historique.class create mode 100644 Implementation/src/MessageHorodate.class diff --git a/Implementation/src/ChatApp.class b/Implementation/src/ChatApp.class index ce9ebb74650f7742f54773e18dd611f0a2bbcf06..4477cf6a2ffe96de4fe140ebf19a8ec44aeb793d 100644 GIT binary patch delta 1614 zcma)+>r)d~7{;Fsn{2XKpaGl$Qz(v%g&@YEeyGB<6=;PD$dndjbfy!Vh{4><1pzOy z3KoUd;#%uaTSKk4-W0SUg2i6!&EBZJ{t5jX`a%1gqyy;mLw6@<^IrCM&UxSG?78CW zCF-p^)3X59;LmZ@7_-2SfP$cgod`*IpxfEwbaMh$(c*rRn%aQ zhP`->(>Yx(6*25r@REiDI4Gf5pEVZg>y7oR1|^uDjr#rWkct7ktig&Q30hfG-F9bW zT`*W(-fqPa3@aGX@CshlXN=vJ*EDoOQ*caQY06(ciXs&o@VbT*cte7j3ujVtQ>iqrpEfP4jHAemce#xEK-3k8sxaW3hVx?2S-ybF zv(4iUwT9h{nQ>89l!lF&K4-AO6OIHzo}FTv?DWo~5s%l=>wFwEhPP*17BxKgRUtH|^nXcx5zr^VZxx?YLB@(OIDC%41b%w+4u!3Lp8y36#yXZoeTYX@LF!Rj@WuUfv0&l zppmx#Qu%jKNJ_#~QYd#xpwzCX)JBCI z5mFm9ZBh_7wTQuZk5=pya9Zp|e2SxBv|mN({paHZL$kOspQ@kDvh^$+pD~#6DHW0? zE#tPuWt~Ay=M>(%0%?Ng;`5fvnteu}0iWXwJ_{+Lo6NYC8oy7CKc>bx+-6*5>=*oo HKTz-wU0z)C delta 1312 zcma)*?Nd~B6vsbz_bzw2dzAsnfP{2p3U^Too2f>p2Emf?F~)e%X&Q2ufB_a+Km-hs zeC$Exre;2bR@!s;(6S2Ill7vPO@Bb|YI@h(UTELDGGe^y?%ebHo!>d2Qd%)xh5vjoR#_%Oc^>O^-p5`*)zw{Vhpphf};~Fuy$>ZE0$Wb!|z+WOI+251O?>&bWitIyWykY+Q0r1-BSq zxPJxv=YMUJWYQw#s1DcNuFPA;l>4Mz_{28`p~|>!+2`eD1o_rrUR7+z?2+zV?Ny<& ztuc{^B`kh$PupShmRGBDnMLj&cFxOw<(0z%RoNy$1_tM}_wl~oM|f2GO#Q|=Fa3hF zMe^_-^9sggfQXZg;JeE_y3LfTh z?aFzIm3$=6e0+CgG%b7<7cJIXayKjryuVTvy>#3hXZvOkUW6t2tl$;8%o-k}QrcRc z<9VuCmj>qGzfFNCY22E~KO%grC{w&qz3O_JIqlTl$E=ZktCD?D>DID}deOIuynU9L zcaOPjF7uOn%zSrX-ZMk9xkklp68BYco5gJvw@uvk|G~}VQ$D-f4x>U%Gj)p-Q}`Of z{_?O{p5m1hO_Q{4P>Zt7U!^2zuah#A9ZJn=*;(T=O1A&c6rCGOr|4~nOwxCq0Uvdd zBqNsyZd#sXpY|n5HYVAxsBt2>98U4(jP;#J&haEC=boL`*=78^pyJi5#O(|v^f`_( z!T}Cz^`%E=8w-{HPIBpD2?>otx9ZWOdh{x^Pr(BU->v@i^AdYJjJ)>BI?OJy2814A zpO^~VqBJb|7WAg#5?nG dg{xX~rC*cBjkKIj%bR>Bi>=e|`H`Q<{};w32HgMv diff --git a/Implementation/src/ChatApp.java b/Implementation/src/ChatApp.java index 5c56390..95e9a35 100644 --- a/Implementation/src/ChatApp.java +++ b/Implementation/src/ChatApp.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -17,7 +18,7 @@ public class ChatApp { /* Liste des utilisateurs actifs */ private ListUtilisateurs actifUsers ; private static ArrayList ListPort = new ArrayList(); - private Map mapHistorique ; + private Map mapHistorique ; @@ -49,8 +50,13 @@ public class ChatApp { //ip.getHostAddress(); this.me = new Utilisateur(pseudo,port,ip); this.actifUsers.addList(getMe()); + this.mapHistorique = new HashMap() ; } + public void majHistorique(String pseudo,Historique h) { + getMapHistorique().put(h.getUser2().getPseudo(),h); + } + /** @@ -112,6 +118,8 @@ public class ChatApp { public static void main (String[] args) throws IOException { //Integer p = 2345 ; ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ; + InetAddress localHost = InetAddress.getLocalHost() ; + System.out.println("Mon adress: "+ localHost.toString()); ListPort.add(1234); ListPort.add(3000); ListPort.add(4000); @@ -151,6 +159,22 @@ public class ChatApp { public ListUtilisateurs getActifUsers() { return actifUsers; } + + public Map getMapHistorique() { + return mapHistorique; + } + + public Historique getHist(String pseudo) { + Historique h = this.mapHistorique.get(pseudo); + if( h != null) { + return h ; + } + else { + h = new Historique(this.me, this.getActifUsers().getPseudoList(pseudo)); + return h ; + } + } + } class Runner implements Runnable { diff --git a/Implementation/src/Historique.class b/Implementation/src/Historique.class new file mode 100644 index 0000000000000000000000000000000000000000..24db2fd6067979f5484c8fbf2507ccf8a988ad80 GIT binary patch literal 615 zcmZuvZBNrs6n@S+n5~5k#*2U`C^1_xF8Ym>kO&FkL)8z+jDEXgH_Ih+jkm3dKg+~P zq6t5MA7yy%fQ&`bIyQbzx)2m<>^N z@Dbuo1#^P>$fzK&_10STBcV`$8a#(z2(gGI!TebMD79&qih{-D9%}5kk3y_qm5r)y zm$=3?@Xj!C^NYYgHobw$3rnpV$YdM4$vd58s;6%~G_6|0FE z==a6fj$jU!aYQ@?VfVv{Q=@wz-luAN!Q?Q?W; zPY|q)^2e-m$yjH6!pc4w9?#Y291?90QHfp-F%$ho?ejV2hp7MLSHV-pCGtR@GJHM( qX6dv-55Wfguk~I~-}Mnhzfj-)jpa{czWa~Bu6*8u;2HB0o?ih4+JWr= literal 0 HcmV?d00001 diff --git a/Implementation/src/Historique.java b/Implementation/src/Historique.java index 1cbfffb..f416045 100644 --- a/Implementation/src/Historique.java +++ b/Implementation/src/Historique.java @@ -1,17 +1,47 @@ import java.util.ArrayList; +/** +*

+* Classe permettant de sauvegarder les échanges entre deux utilisateurs +*

+*/ public class Historique { private Utilisateur User1; private Utilisateur User2; + // Liste conservant les differents échanges private ArrayList HistoriqueHorodate ; + /** + *

+ * Constructeur : un historique sauvegarde les echanges entre + * User1 et User2 + * @param User1 - un utilisateur + * @param User2 - un second utilisateur + *

+ */ public Historique(Utilisateur User1, Utilisateur User2) { this.User1 = User1; this.User2 = User2; this.HistoriqueHorodate = new ArrayList(); } + /** + *

+ * On ajoute un message échangé dans la liste 'HistoriqueHorodate' + * + * @param mh - le message horodate échangé + *

+ */ public void addMessage(MessageHorodate mh) { this.HistoriqueHorodate.add(mh); } + + /** + *

+ * getter pour recuperer le second utilisateur + *

+ */ + public Utilisateur getUser2() { + return User2; + } } diff --git a/Implementation/src/MessageHorodate.class b/Implementation/src/MessageHorodate.class new file mode 100644 index 0000000000000000000000000000000000000000..68a892f63de742f74306cc0d636bd31dabac82d2 GIT binary patch literal 1534 zcmaJ>druQV5dUpkd*wVH78H31sG#iuo{A4_@ma*GEvO*I82?!43J2{Sx!W4~CVmV} z1d@{Y0sK(L*}ID^w(&06$L#EHelt5WzkWA<0=S1aI%0@xNEkSUBtzd0|IDo_cebpR zjUBNm8IlXOW6K8&@l1BT3n_GI&<&i1!O&Y4zR$Nr(e>O4mx95l2w&O`m)!Pf+g*Aq z?W*n5S>4O4+dT$))zzf$*1b)kL}v`7(a)eoXbkC6lgFy`Y-cO4;VeT>Ag&XnwMdXU z1`t;W=M4;Dn9dc6hz!vpe?p+YH}WZrGLSi7%)mG%7zS&6R}@@llgoFu+@_T;xg&js zxlB8a6aHk|&(mNS(}~h$1Cy9i0U=6jZs-NWK&IoR7_KTh8HV{zM%$v%5hRYQ8m1YB z19d6BNNd%u?Nx<})spMgxJ+S|p?{w~t6a7!m5E|8SF7cGUxx`xCBb!uvmGd8*LB>) zoQ7KlZsQI)(lpY9r)T{X*kPEAK$@ZNz?s3yoQUYjO}pFc42gnUp_lC~*^XGQ*EWQ= z#y6@YNy)!a)>nh%TC$aV;GZPDreG;Gp17{`rN{TmLTWd{esKKEv16fJKTSXpuXWs_-XEuDe^`%eUuCi{!+`wf#NOLH$FE zepsOS*04qp1zxSL+EP%qKV>+>7F%jEH^KB2o-v$eVUR+>bA~Ra9x~j%ROeCLa!jW* ze(pHJD^$7f3tz)B!&F;rI=QUj6&1w)RVi!2_~0THPK;_ZK_fL7TE$ei2xcnqV5U|< zbDZkz6z*83j{kx|2S#nFckrRBm#=ijr2%q+WY~nL5c{L-3_9vmWR01z?Dea*FaV+zx`t> zLkzQI#-v6yO`Tx|7G}u^^@zxnMH>6s&33(O22;zkopwQG>uI=LN3p4Kre g;6Ba66o3Z=wHS;`!B`B&7bwxWPG@DT;5CN+0P96|^#A|> literal 0 HcmV?d00001 diff --git a/Implementation/src/MessageHorodate.java b/Implementation/src/MessageHorodate.java index cef9f52..e98a299 100644 --- a/Implementation/src/MessageHorodate.java +++ b/Implementation/src/MessageHorodate.java @@ -56,9 +56,16 @@ public class MessageHorodate { return format.format(this.dateHorodatage); } - public static MessageHorodate stringToMessageHorodate(String s) { + + /** + *

+ * Permet de re creer un message horodate a partir d'un string + * @return un messageHorodate + *

+ */ + /* public static MessageHorodate stringToMessageHorodate(String s) { MessageHorodate mh ; return mh ; - } + }*/ } diff --git a/Implementation/src/Runner.class b/Implementation/src/Runner.class index 8d6625f3d375d584311b99d1269d3640b89ceff3..d5bb7134d933e1e17b239e1ae323686d410b2029 100644 GIT binary patch delta 37 tcmey&^qFac9wX-h1{Q{e44e#$CYv+r@-JgxXIR0&$RNSMz`(>H2>`gU2U7q5 delta 37 tcmey&^qFac9wX;m1{Q{S44e$}Cz~_s@-Jp!XIRR>$RNSMz`(>H2>`c(2Sfk> diff --git a/Implementation/src/TCPEchange.java b/Implementation/src/TCPEchange.java index 8667584..978c739 100644 --- a/Implementation/src/TCPEchange.java +++ b/Implementation/src/TCPEchange.java @@ -4,10 +4,21 @@ import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; +/** +*

+* Classe representant les échanges TCP entre utilisateurs. +*

+*/ public class TCPEchange { - public static void envoiTCP(Utilisateur User1,Utilisateur User2, String Msg ) { - MessageHorodate mh = new MessageHorodate(User1, User2, Msg); + public static void envoiTCP(ChatApp app,Utilisateur User2, String Msg ) { + // On cree un messagehorodate + MessageHorodate mh = new MessageHorodate(app.getMe(), User2, Msg); + // on ajoute le msg à son historique + Historique h = app.getHist(User2.getPseudo()); + // on update la liste des historiques de app + app.majHistorique(User2.getPseudo(), h); + try { Socket s = new Socket(User2.getIp(), User2.getPort()); PrintStream output = new PrintStream(s.getOutputStream()); @@ -19,13 +30,13 @@ public class TCPEchange { } } - public static void ecouteTCP() { + public static void ecouteTCP(ChatApp app) { try { ServerSocket ss = new ServerSocket(1234); while(true) { System.out.println("Attente Session de clavardage"); Socket link = ss.accept(); - new Thread(new RunnerTCP(link)).start(); + new Thread(new RunnerTCP(link,app)).start(); } } catch (Exception e) { @@ -36,9 +47,11 @@ public class TCPEchange { class RunnerTCP implements Runnable { final Socket link; + private ChatApp app ; - public RunnerTCP(Socket link) { + public RunnerTCP(Socket link,ChatApp app ) { this.link = link; + this.app = app; } @Override @@ -50,6 +63,13 @@ class RunnerTCP implements Runnable { while ((rcv = is.read()) != -1) { System.out.println("Received: "+ rcv); } + // On recree un messagehorodate à partir du message reçu + + // on ajoute le msg à son historique + + // on update la liste des historiques de app + + System.out.println("Finishing thread"); is.close(); link.close();