diff --git a/Implementation/src/Historique.java b/Implementation/src/Historique.java index f416045..4419be3 100644 --- a/Implementation/src/Historique.java +++ b/Implementation/src/Historique.java @@ -44,4 +44,16 @@ public class Historique { public Utilisateur getUser2() { return User2; } + + public void afficher10derniers() { + int n =10; + if(HistoriqueHorodate.size()<=10) { + n = HistoriqueHorodate.size(); + } + for(int i = 0; i */ public MessageHorodate(Utilisateur destinataire, Utilisateur source, String Message, int type) { - this.destinataire = destinataire ; - this.source = source ; - this.Message = Message ; + this.setDestinataire(destinataire) ; + this.setSource(source) ; + this.setMessage(Message) ; this.dateHorodatage = new Date(); this.type = type; } @@ -44,11 +44,11 @@ public class MessageHorodate { @Override public String toString() { String Msg = ""; - Msg += ("Destinataire:" + this.destinataire + "\n") ; - Msg += ("Source:" + this.source+ "\n") ; + Msg += ("Destinataire:" + this.getDestinataire() + "\n") ; + Msg += ("Source:" + this.getSource()+ "\n") ; Msg += ("Type:"+ this.type+ "\n"); Msg += ("Date:" + this.dateToString() + "\n") ; - Msg += ("Message:" + this.Message + "\n" ); + Msg += ("Message:" + this.getMessage() + "\n" ); return Msg ; } @@ -94,4 +94,36 @@ public class MessageHorodate { return mh ; } + public Utilisateur getSource() { + return source; + } + + public void setSource(Utilisateur source) { + this.source = source; + } + + public Utilisateur getDestinataire() { + return destinataire; + } + + public void setDestinataire(Utilisateur destinataire) { + this.destinataire = destinataire; + } + + public String getMessage() { + return Message; + } + + public void setMessage(String message) { + Message = message; + } + + public int getType() { + return type; + } + + public void setType(int Type) { + this.type = type; + } + } diff --git a/Implementation/src/TCPEchange.java b/Implementation/src/TCPEchange.java index 99274a3..3255e28 100644 --- a/Implementation/src/TCPEchange.java +++ b/Implementation/src/TCPEchange.java @@ -95,10 +95,21 @@ class RunnerTCPEnvoi implements Runnable { String msg; while(true){ msg = sc.nextLine(); + if(msg.equals("--STOP--")) { + MessageHorodate mh = new MessageHorodate(Destinataire,app.getMe(),msg,0); + break; + } MessageHorodate mh = new MessageHorodate(Destinataire,app.getMe(),msg,1); - out.println(msg); + out.println(mh); out.flush(); } + try { + System.out.println("Fermeture du thread d'envoi"); + in.close(); + link.close(); + }catch(Exception e) { + // Gestion de l'exception de la fermeture de la socket + } } } @@ -120,30 +131,51 @@ class RunnerTCPEcoute implements Runnable { //InputStream is = link.getInputStream(); BufferedReader in = new BufferedReader (new InputStreamReader (link.getInputStream())); - String line = in.readLine(); + String line = ""; + String dest = ""; + String src = ""; + String type = ""; + String date = ""; + String payload = ""; String msg = ""; while (line != null) { - - //if(!msg.equals("")) { - System.out.println("Received: "+ line); - line = in.readLine(); - //} - /*if((line.split(" ")[0].equals("Destinataire"))) { - if(msg != "") { - MessageHorodate mh = MessageHorodate.stringToMessageHorodate(msg); - // on ajoute le msg à son historique - Historique h = app.getHist(mh.); + line = in.readLine(); + if(line.split(":")[0].equals("Destinataire")) { + if(msg.equals("")) { + dest = line+"\n"; + } + else { + msg=dest+src+type+date+payload; + payload = ""; + MessageHorodate mh = MessageHorodate.stringToMessageHorodate(msg); + if(mh.getType()==1) { + Historique h = app.getHist(mh.getSource().getPseudo()); h.addMessage(mh); - // on update la liste des historiques de app - app.majHistorique(User2.getPseudo(), h); - - } - }*/ - // On recree un messagehorodate à partir du message reçu - - // on ajoute le msg à son historique - - // on update la liste des historiques de app + app.majHistorique(mh.getSource().getPseudo(), h); + } + else { + break; + } + + + } + } + else if(line.split(":")[0].equals("Source")) { + src = line+"\n"; + } + else if(line.split(":")[0].equals("Type")) { + type = line+"\n"; + } + else if(line.split(":")[0].equals("Date")) { + date = line+"\n"; + } + else { + payload += line+"\n"; + } + + System.out.println("Received: "+ line); + + } System.out.println("Finishing thread"); diff --git a/Implementation/src/UDPEchange.java b/Implementation/src/UDPEchange.java index edbcd6f..ab158df 100644 --- a/Implementation/src/UDPEchange.java +++ b/Implementation/src/UDPEchange.java @@ -77,7 +77,7 @@ public class UDPEchange { } } } - } catch (SocketException e) { + } catch (Exception e) { System.out.println("unable to get current IP " + e.getMessage()); } return null; diff --git a/Implementation/src/Utilisateur.java b/Implementation/src/Utilisateur.java index b679fd1..37a4c26 100644 --- a/Implementation/src/Utilisateur.java +++ b/Implementation/src/Utilisateur.java @@ -60,7 +60,7 @@ public class Utilisateur extends Object { id=mots[10]; Utilisateur user = null; try { - user = new Utilisateur(name,port,InetAddress.getByName(ip.split("/")[0])); + user = new Utilisateur(name,port,InetAddress.getByName(ip.split("/")[1])); } catch (UnknownHostException e) { e.printStackTrace(); }