From a6fdfff6f8ab7fb7d8c6912c922336c13d62629e Mon Sep 17 00:00:00 2001 From: alartigu Date: Wed, 2 Dec 2020 11:17:34 +0100 Subject: [PATCH] ajout classe MessageHorodate Historique et TCPEchange --- Implementation/src/ChatApp.java | 3 +- Implementation/src/Historique.java | 17 +++++++ Implementation/src/MessageHorodate.java | 64 ++++++++++++++++++++++++ Implementation/src/RunnerUDP.class | Bin 3918 -> 3912 bytes Implementation/src/TCPEchange.java | 60 ++++++++++++++++++++++ 5 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 Implementation/src/Historique.java create mode 100644 Implementation/src/MessageHorodate.java create mode 100644 Implementation/src/TCPEchange.java diff --git a/Implementation/src/ChatApp.java b/Implementation/src/ChatApp.java index 4c96441..e5de418 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.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -16,7 +17,7 @@ public class ChatApp { /* Liste des utilisateurs actifs */ private ListUtilisateurs actifUsers ; private static ArrayList ListPort = new ArrayList(); - + private Map mapHistorique ; diff --git a/Implementation/src/Historique.java b/Implementation/src/Historique.java new file mode 100644 index 0000000..1cbfffb --- /dev/null +++ b/Implementation/src/Historique.java @@ -0,0 +1,17 @@ +import java.util.ArrayList; + +public class Historique { + private Utilisateur User1; + private Utilisateur User2; + private ArrayList HistoriqueHorodate ; + + public Historique(Utilisateur User1, Utilisateur User2) { + this.User1 = User1; + this.User2 = User2; + this.HistoriqueHorodate = new ArrayList(); + } + + public void addMessage(MessageHorodate mh) { + this.HistoriqueHorodate.add(mh); + } +} diff --git a/Implementation/src/MessageHorodate.java b/Implementation/src/MessageHorodate.java new file mode 100644 index 0000000..cef9f52 --- /dev/null +++ b/Implementation/src/MessageHorodate.java @@ -0,0 +1,64 @@ +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** +*

+* Classe representant les messages envoyés en TCP lors d'une session de clavardage +*

+*/ +public class MessageHorodate { + private Utilisateur destinataire ; + private Utilisateur source ; + private Date dateHorodatage ; + private String Message; + + /** + *

+ * Constructeur , le message va etre horodate + * @param destinataire - Destinataire du message + * @param source - Source du message + * @param Message - Message envoye + *

+ */ + public MessageHorodate(Utilisateur destinataire , Utilisateur source , String Message) { + this.destinataire = destinataire ; + this.source = source ; + this.Message = Message ; + this.dateHorodatage = new Date(); + } + + /** + *

+ * permet de creer une representation string du message + * @return Les differents attributs de la classe sous forme de string + *

+ */ + public String toString() { + String Msg = ""; + Msg += ("Destinataire: " + this.destinataire + "\n") ; + Msg += ("Source: " + this.source+ "\n") ; + Msg += ("Date: " + this.dateToString() + "\n") ; + Msg += ("Message:" + this.Message + "\n" ); + return Msg ; + } + + /** + *

+ * permet de creer une representation string de la date d'horodatage + * @return La date d'horodatage du message en format yyyy/MM/dd HH:mm:ss + *

+ */ + public String dateToString() { + DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + return format.format(this.dateHorodatage); + } + + public static MessageHorodate stringToMessageHorodate(String s) { + MessageHorodate mh ; + return mh ; + } + +} diff --git a/Implementation/src/RunnerUDP.class b/Implementation/src/RunnerUDP.class index 73df4cc39ceb876bfab11b82dbc169440b1426c6..8136bd9c054b37af8b31ad68e7d9160044e5bdbc 100644 GIT binary patch delta 108 zcmV-y0F(dD9>^ZBJ_`xY00jUB00072vquXs0Rg&`cno#{Ig{@U9|0|s6%C>T)B)F% zx(&fG)Bwl<*8s)=*#O4@-T=x0=m66J@c`5T`2gJl0s!6u69C@=B>><8HUQ}YKLF|i ORFkX@N&zmD_YPNT0weqY delta 114 zcmV-&0FD319?l-HJ_`xe00jUB00078vquXs0Rh01cno#{Ka=ka9|tP501dVPYm*NR zq669i-IKHp!7kOn>H=DmrVdI0G?VcTS4MLtK>z>% diff --git a/Implementation/src/TCPEchange.java b/Implementation/src/TCPEchange.java new file mode 100644 index 0000000..8667584 --- /dev/null +++ b/Implementation/src/TCPEchange.java @@ -0,0 +1,60 @@ +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.net.ServerSocket; +import java.net.Socket; + +public class TCPEchange { + + public static void envoiTCP(Utilisateur User1,Utilisateur User2, String Msg ) { + MessageHorodate mh = new MessageHorodate(User1, User2, Msg); + try { + Socket s = new Socket(User2.getIp(), User2.getPort()); + PrintStream output = new PrintStream(s.getOutputStream()); + output.println(mh.toString()); + output.close(); + s.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void ecouteTCP() { + 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(); + } + } + catch (Exception e) { + e.printStackTrace(); + } + } +} + +class RunnerTCP implements Runnable { + final Socket link; + + public RunnerTCP(Socket link) { + this.link = link; + } + + @Override + public void run() { + System.out.println("Thread started"); + try { + InputStream is = link.getInputStream(); + int rcv = 0; + while ((rcv = is.read()) != -1) { + System.out.println("Received: "+ rcv); + } + System.out.println("Finishing thread"); + is.close(); + link.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +}