Compare commits
No commits in common. "fdea8b4c302e5902ee14198018161247a8508b1d" and "220c58553780fe2ebd3f115f74e7d2b7f6fda413" have entirely different histories.
fdea8b4c30
...
220c585537
12 changed files with 83 additions and 165 deletions
Binary file not shown.
|
@ -27,7 +27,6 @@ public class ChatApp {
|
||||||
|
|
||||||
/* Map on l'on stocke localement les historiques des messages */
|
/* Map on l'on stocke localement les historiques des messages */
|
||||||
private Map<String,Historique> mapHistorique ;
|
private Map<String,Historique> mapHistorique ;
|
||||||
private boolean historiqueAvailable = true;
|
|
||||||
|
|
||||||
/* ChatApp est associe a un utilisateur */
|
/* ChatApp est associe a un utilisateur */
|
||||||
private Utilisateur me;
|
private Utilisateur me;
|
||||||
|
@ -54,28 +53,11 @@ public class ChatApp {
|
||||||
* @param pseudo Pseudo de l'utilisateur
|
* @param pseudo Pseudo de l'utilisateur
|
||||||
* @param h nouvel Historique entre les deux utilisateurs
|
* @param h nouvel Historique entre les deux utilisateurs
|
||||||
*/
|
*/
|
||||||
public synchronized void majHistorique(Historique h) {
|
public void majHistorique(String pseudo,Historique h) {
|
||||||
getMapHistorique().put(h.getUser2().getPseudo(),h);
|
getMapHistorique().put(h.getUser2().getPseudo(),h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public void majHistorique2(MessageHorodate mh, String pseudo) {
|
|
||||||
Historique h = getMapHistorique().get(pseudo);
|
|
||||||
//h.addMessage(mh);
|
|
||||||
getMapHistorique().put(h.getUser2().getPseudo(),h);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public void majHistorique2(String mh, String pseudo) {
|
|
||||||
Historique h = getMapHistorique().get(pseudo);
|
|
||||||
MessageHorodate msghor = new MessageHorodate(this.getMe(),this.getMe(),"rien",1);
|
|
||||||
System.out.println(">>"+mh+"<<");
|
|
||||||
System.out.print(msghor.getDateHorodatage());
|
|
||||||
System.out.println(msghor.getDestinataire());
|
|
||||||
System.out.println(msghor.getSource());
|
|
||||||
System.out.println(msghor.getType());
|
|
||||||
|
|
||||||
h.addMessage(msghor);
|
|
||||||
getMapHistorique().put(h.getUser2().getPseudo(),h);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modification du pseudo de l'utilisateur
|
* Modification du pseudo de l'utilisateur
|
||||||
|
@ -183,7 +165,7 @@ public class ChatApp {
|
||||||
* @param pseudo Pseudo de l'utilisateur dont on souhaite obtenir l'historique
|
* @param pseudo Pseudo de l'utilisateur dont on souhaite obtenir l'historique
|
||||||
* @return Un historique
|
* @return Un historique
|
||||||
*/
|
*/
|
||||||
public synchronized Historique getHist(String pseudo) {
|
public Historique getHist(String pseudo) {
|
||||||
Historique h = this.mapHistorique.get(pseudo);
|
Historique h = this.mapHistorique.get(pseudo);
|
||||||
if( h != null) {
|
if( h != null) {
|
||||||
return h ;
|
return h ;
|
||||||
|
@ -225,14 +207,6 @@ public class ChatApp {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isHistoriqueAvailable() {
|
|
||||||
return historiqueAvailable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHistoriqueAvailable(boolean historiqueAvailable) {
|
|
||||||
this.historiqueAvailable = historiqueAvailable;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class RunnerEcouteUDP implements Runnable {
|
class RunnerEcouteUDP implements Runnable {
|
||||||
|
|
Binary file not shown.
|
@ -53,7 +53,7 @@ public class Historique {
|
||||||
n = HistoriqueHorodate.size();
|
n = HistoriqueHorodate.size();
|
||||||
}
|
}
|
||||||
for(int i = 0; i<n;i++) {
|
for(int i = 0; i<n;i++) {
|
||||||
String exp = HistoriqueHorodate.get(i).getSource().getPseudo();
|
String exp = HistoriqueHorodate.get(i).getSource().toString();
|
||||||
String payload = HistoriqueHorodate.get(i).getMessage();
|
String payload = HistoriqueHorodate.get(i).getMessage();
|
||||||
System.out.println(exp+" : "+payload);
|
System.out.println(exp+" : "+payload);
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -27,12 +27,12 @@ public class MessageHorodate {
|
||||||
this.setDestinataire(destinataire) ;
|
this.setDestinataire(destinataire) ;
|
||||||
this.setSource(source) ;
|
this.setSource(source) ;
|
||||||
this.setMessage(Message) ;
|
this.setMessage(Message) ;
|
||||||
this.setDateHorodatage(new Date());
|
this.dateHorodatage = new Date();
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDate(Date d) {
|
public void setDate(Date d) {
|
||||||
this.setDateHorodatage(d);
|
this.dateHorodatage=d;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -44,11 +44,11 @@ public class MessageHorodate {
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
String Msg = "";
|
String Msg = "";
|
||||||
Msg += ("Destinataire::" + this.getDestinataire() + "\n") ;
|
Msg += ("Destinataire:" + this.getDestinataire() + "\n") ;
|
||||||
Msg += ("Source::" + this.getSource()+ "\n") ;
|
Msg += ("Source:" + this.getSource()+ "\n") ;
|
||||||
Msg += ("Type::"+ this.type+ "\n");
|
Msg += ("Type:"+ this.type+ "\n");
|
||||||
Msg += ("Date::" + this.dateToString() + "\n") ;
|
Msg += ("Date:" + this.dateToString() + "\n") ;
|
||||||
Msg += ("Message::" + this.getMessage() + "\n" );
|
Msg += ("Message:" + this.getMessage() + "\n" );
|
||||||
return Msg ;
|
return Msg ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ public class MessageHorodate {
|
||||||
*/
|
*/
|
||||||
public String dateToString() {
|
public String dateToString() {
|
||||||
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
||||||
return format.format(this.getDateHorodatage());
|
return format.format(this.dateHorodatage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,26 +73,23 @@ public class MessageHorodate {
|
||||||
public static MessageHorodate stringToMessageHorodate(String s) {
|
public static MessageHorodate stringToMessageHorodate(String s) {
|
||||||
|
|
||||||
String mots[] = s.split("\n");
|
String mots[] = s.split("\n");
|
||||||
Utilisateur destinataire = Utilisateur.stringToUtilisateur(mots[0].split("::")[1]);
|
Utilisateur destinataire = Utilisateur.stringToUtilisateur(mots[0].split(":")[1]);
|
||||||
Utilisateur source = Utilisateur.stringToUtilisateur(mots[1].split("::")[1]);
|
Utilisateur source = Utilisateur.stringToUtilisateur(mots[1].split(":")[1]);
|
||||||
int type = Integer.parseInt(mots[2].split("::")[1]);
|
int type = Integer.parseInt(mots[2].split(":")[1]);
|
||||||
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
/*try {
|
try {
|
||||||
date = format.parse(mots[3].split("::")[1]);
|
date = format.parse(mots[3].split(":")[1]);
|
||||||
} catch (Exception e) {
|
} catch (ParseException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}*/
|
}
|
||||||
String payload = "";
|
String payload = "";
|
||||||
for(int i=4; i< mots.length; i++) {
|
for(int i=4; i< mots.length; i++) {
|
||||||
if(mots[i].startsWith("Message::")) {
|
|
||||||
mots[i]=mots[i].split("::")[1];
|
|
||||||
}
|
|
||||||
payload += mots[i]+"\n";
|
payload += mots[i]+"\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageHorodate mh = new MessageHorodate(destinataire, source, payload, type);
|
MessageHorodate mh = new MessageHorodate(destinataire, source, payload, type);
|
||||||
//mh.setDate(date);
|
mh.setDate(date);
|
||||||
|
|
||||||
return mh ;
|
return mh ;
|
||||||
}
|
}
|
||||||
|
@ -129,12 +126,4 @@ public class MessageHorodate {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getDateHorodatage() {
|
|
||||||
return dateHorodatage;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDateHorodatage(Date dateHorodatage) {
|
|
||||||
this.dateHorodatage = dateHorodatage;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -6,7 +6,6 @@ import java.net.DatagramSocket;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.net.SocketException;
|
import java.net.SocketException;
|
||||||
import java.util.NoSuchElementException;
|
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
@ -20,12 +19,12 @@ import java.io.InputStreamReader;
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
public class TCPEchange {
|
public class TCPEchange {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Equivalent a un handshake.
|
* Equivalent a un handshake.
|
||||||
* L'utilisateur associé a app souhaite entamé une discussion avec User2
|
* L'utilisateur associé a app souhaite entamé une discussion avec User2
|
||||||
* @param app L'app associé à l'utilisateur qui souhaite entamé la discussion
|
* @param app L'app associé à l'utilisateur qui souhaite entamé la discussion
|
||||||
* @param User2 Le destinataire
|
* @param User2 Le destinataire
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
|
@ -33,33 +32,25 @@ public class TCPEchange {
|
||||||
System.out.println("Demmarrage d'une session de clavardage");
|
System.out.println("Demmarrage d'une session de clavardage");
|
||||||
Socket s = new Socket(User2.getIp(),5000);
|
Socket s = new Socket(User2.getIp(),5000);
|
||||||
System.out.println("Socket de demarrage d'une session cree");
|
System.out.println("Socket de demarrage d'une session cree");
|
||||||
//ExecutorService exec = Executors.newFixedThreadPool(1000);
|
ExecutorService exec = Executors.newFixedThreadPool(1000);
|
||||||
Thread t1 = new Thread(new RunnerTCPEcoute(s,app));
|
// On lance un thread d'ecoute pour recevoir les messages de USER2
|
||||||
Thread t2 = new Thread(new RunnerTCPEnvoi(s,app,User2,false));
|
exec.submit(new RunnerTCPEcoute(s,app));
|
||||||
t1.start();
|
// On lance un thread d'envoi pour continuer d'envoyer des messages avec USER2
|
||||||
t2.start();
|
exec.submit(new RunnerTCPEnvoi(s,app,User2,false));
|
||||||
try {
|
|
||||||
t1.join();
|
|
||||||
t2.join();
|
|
||||||
}catch(InterruptedException e) {
|
|
||||||
System.out.println("Un thread s'est arrete brusquement");
|
|
||||||
}
|
|
||||||
System.out.println("Tout s'est passe creme");
|
|
||||||
app.getHist(User2.getPseudo()).afficher10derniers();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public static void envoiTCP(ChatApp app,Utilisateur User2, String Msg, int type ) {
|
/*public static void envoiTCP(ChatApp app,Utilisateur User2, String Msg, int type ) {
|
||||||
// On cree un messagehorodate
|
// On cree un messagehorodate
|
||||||
MessageHorodate mh = new MessageHorodate(app.getMe(), User2, Msg, type);
|
MessageHorodate mh = new MessageHorodate(app.getMe(), User2, Msg, type);
|
||||||
if( type == 1 ) {
|
if( type == 1 ) {
|
||||||
// on ajoute le msg à son historique
|
// on ajoute le msg à son historique
|
||||||
Historique h = app.getHist(User2.getPseudo());
|
Historique h = app.getHist(User2.getPseudo());
|
||||||
h.addMessage(mh);
|
h.addMessage(mh);
|
||||||
// on update la liste des historiques de app
|
// on update la liste des historiques de app
|
||||||
app.majHistorique(h);
|
app.majHistorique(User2.getPseudo(), h);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Socket s = new Socket(User2.getIp(), User2.getPort());
|
Socket s = new Socket(User2.getIp(), User2.getPort());
|
||||||
PrintStream output = new PrintStream(s.getOutputStream());
|
PrintStream output = new PrintStream(s.getOutputStream());
|
||||||
|
@ -70,8 +61,8 @@ public class TCPEchange {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Méthode pour qu'un objet de la classe ChatApp soit constamment en écoute de potentielles connexions
|
* Méthode pour qu'un objet de la classe ChatApp soit constamment en écoute de potentielles connexions
|
||||||
|
@ -85,13 +76,13 @@ public class TCPEchange {
|
||||||
try {
|
try {
|
||||||
ss = new ServerSocket(5000); // On ecoute sur le port 5000
|
ss = new ServerSocket(5000); // On ecoute sur le port 5000
|
||||||
System.out.println("Socket d'ecoute cree");
|
System.out.println("Socket d'ecoute cree");
|
||||||
while(true) { // Ecoute en boucle
|
while(true) { // Ecoute en boucle
|
||||||
System.out.println("Attente Session de clavardage");
|
System.out.println("Attente Session de clavardage");
|
||||||
Socket link = ss.accept(); // Blocante
|
Socket link = ss.accept(); // Blocante
|
||||||
exec.submit(new RunnerTCPEcoute(link,app)); // On crée un thread qui va gerer la connexion recu
|
exec.submit(new RunnerTCPEcoute(link,app)); // On crée un thread qui va gerer la connexion recu
|
||||||
System.out.println("L'ecoute TCP continue apres le premier thread demarre");
|
System.out.println("L'ecoute TCP continue apres le premier thread demarre");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
@ -101,7 +92,7 @@ public class TCPEchange {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Classe representant les threads s'occupant de l'envoie de messages en utilisant le protocole TCP.
|
* Classe representant les threads s'occupant de l'envoie de messages en utilisant le protocole TCP.
|
||||||
* Cette classe implemente l'interface Runnable.
|
* Cette classe implemente l'interface Runnable.
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
|
@ -117,7 +108,7 @@ class RunnerTCPEnvoi implements Runnable {
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Constructeur de la classe RunnerTCPEnvoi
|
* Constructeur de la classe RunnerTCPEnvoi
|
||||||
* @param link
|
* @param link
|
||||||
* @param app Un objet ChatApp dont l'utilisateur associé souhaite entame une discussion
|
* @param app Un objet ChatApp dont l'utilisateur associé souhaite entame une discussion
|
||||||
* @param user2 Destinataire
|
* @param user2 Destinataire
|
||||||
* @param bonjour Boolean true si c'est le debut d'une connexion, false sinon
|
* @param bonjour Boolean true si c'est le debut d'une connexion, false sinon
|
||||||
|
@ -129,14 +120,14 @@ class RunnerTCPEnvoi implements Runnable {
|
||||||
this.Destinataire = user2;
|
this.Destinataire = user2;
|
||||||
this.out = new PrintWriter(link.getOutputStream());
|
this.out = new PrintWriter(link.getOutputStream());
|
||||||
this.in = new BufferedReader (new InputStreamReader (link.getInputStream()));
|
this.in = new BufferedReader (new InputStreamReader (link.getInputStream()));
|
||||||
this.bonjourEnvoye = bonjour;
|
this.bonjourEnvoye = bonjour;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
System.out.println("Creation d'un thread d'envoi");
|
System.out.println("Creation d'un thread d'envoi");
|
||||||
String msg;
|
String msg;
|
||||||
|
|
||||||
while(true){
|
while(true){
|
||||||
if(!bonjourEnvoye) { // bonjourEnvoye est a false si c'est le debut d'une communication
|
if(!bonjourEnvoye) { // bonjourEnvoye est a false si c'est le debut d'une communication
|
||||||
MessageHorodate mh = new MessageHorodate(Destinataire,app.getMe(),"Bonjour",2);
|
MessageHorodate mh = new MessageHorodate(Destinataire,app.getMe(),"Bonjour",2);
|
||||||
|
@ -145,36 +136,16 @@ class RunnerTCPEnvoi implements Runnable {
|
||||||
out.println(mh);
|
out.println(mh);
|
||||||
out.flush();
|
out.flush();
|
||||||
}
|
}
|
||||||
else {
|
else { // Nous sommes dans le cas ou la connexion a deja ete etablie
|
||||||
try {
|
|
||||||
msg = sc.nextLine();
|
msg = sc.nextLine();
|
||||||
}catch(NoSuchElementException e) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
MessageHorodate mh = new MessageHorodate(Destinataire,app.getMe(),msg,1);
|
MessageHorodate mh = new MessageHorodate(Destinataire,app.getMe(),msg,1);
|
||||||
if(msg.equals("--STOP--")) {
|
if(msg.equals("--STOP--")) {
|
||||||
mh = new MessageHorodate(Destinataire,app.getMe(),msg,0); // ENVOYER JUSTE --STOP-- SUFFIT
|
mh = new MessageHorodate(Destinataire,app.getMe(),msg,0);
|
||||||
out.println(mh);
|
out.println(mh);
|
||||||
out.flush();
|
out.flush();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* while(!app.isHistoriqueAvailable()) {
|
out.println(mh); // Envoi du message
|
||||||
try{wait();
|
|
||||||
}catch(InterruptedException e) {}
|
|
||||||
}*/
|
|
||||||
//app.setHistoriqueAvailable(false);
|
|
||||||
synchronized( this.app.getMapHistorique()) {
|
|
||||||
Historique h = app.getHist(Destinataire.getPseudo());
|
|
||||||
h.addMessage(mh);
|
|
||||||
app.majHistorique(h);
|
|
||||||
}
|
|
||||||
|
|
||||||
// on update la liste des historiques de app
|
|
||||||
|
|
||||||
//app.majHistorique2(mh.toString(),Destinataire.getPseudo());
|
|
||||||
//app.setHistoriqueAvailable(false);
|
|
||||||
//notifyAll();
|
|
||||||
out.println(mh);
|
|
||||||
System.out.println("Envoi d'un mesage");
|
System.out.println("Envoi d'un mesage");
|
||||||
out.flush();
|
out.flush();
|
||||||
}
|
}
|
||||||
|
@ -187,14 +158,13 @@ class RunnerTCPEnvoi implements Runnable {
|
||||||
// Gestion de l'exception de la fermeture de la socket
|
// Gestion de l'exception de la fermeture de la socket
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* Classe representant les threads s'occupant de la reception de messages en utilisant le protocole TCP.
|
* Classe representant les threads s'occupant de la reception de messages en utilisant le protocole TCP.
|
||||||
* Cette classe implemente l'interface Runnable.
|
* Cette classe implemente l'interface Runnable.
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
|
@ -202,11 +172,17 @@ class RunnerTCPEcoute implements Runnable {
|
||||||
final Socket link;
|
final Socket link;
|
||||||
private ChatApp app ;
|
private ChatApp app ;
|
||||||
private Utilisateur u2;
|
private Utilisateur u2;
|
||||||
private boolean u2Initialise;
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructeur de la classe RunnerTCPEnvoi
|
||||||
|
* @param link
|
||||||
|
* @param app Un objet ChatApp dont l'utilisateur associé souhaite entame une discussion
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
public RunnerTCPEcoute(Socket link,ChatApp app ) {
|
public RunnerTCPEcoute(Socket link,ChatApp app ) {
|
||||||
this.link = link;
|
this.link = link; // fait le lien entre l'utilisateur associé a app et un autre utilisateur
|
||||||
this.app = app;
|
this.app = app; // Source
|
||||||
this.u2Initialise=false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -216,7 +192,7 @@ class RunnerTCPEcoute implements Runnable {
|
||||||
PrintStream output = new PrintStream(link.getOutputStream());
|
PrintStream output = new PrintStream(link.getOutputStream());
|
||||||
//InputStream is = link.getInputStream();
|
//InputStream is = link.getInputStream();
|
||||||
BufferedReader in = new BufferedReader (new InputStreamReader (link.getInputStream()));
|
BufferedReader in = new BufferedReader (new InputStreamReader (link.getInputStream()));
|
||||||
|
|
||||||
String line = "";
|
String line = "";
|
||||||
String dest = "";
|
String dest = "";
|
||||||
String src = "";
|
String src = "";
|
||||||
|
@ -224,80 +200,57 @@ class RunnerTCPEcoute implements Runnable {
|
||||||
String date = "";
|
String date = "";
|
||||||
String payload = "";
|
String payload = "";
|
||||||
String msg = "";
|
String msg = "";
|
||||||
line = in.readLine();
|
|
||||||
while (line != null) {
|
while (line != null) {
|
||||||
|
|
||||||
|
line = in.readLine();
|
||||||
if(line.split("::")[0].equals("Destinataire")) {
|
|
||||||
|
if(line.split(":")[0].equals("Destinataire")) {
|
||||||
if(msg.equals("")) {
|
if(msg.equals("")) {
|
||||||
dest = line+"\n";
|
dest = line+"\n";
|
||||||
msg=".";
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
msg=dest+src+type+date+payload;
|
msg=dest+src+type+date+payload;
|
||||||
payload = "";
|
payload = "";
|
||||||
MessageHorodate mh = MessageHorodate.stringToMessageHorodate(msg);
|
MessageHorodate mh = MessageHorodate.stringToMessageHorodate(msg);
|
||||||
System.out.println("Type du message:"+mh.getType());
|
|
||||||
if(mh.getType()==1) {
|
if(mh.getType()==1) {
|
||||||
/*while(!app.isHistoriqueAvailable()) {
|
|
||||||
try{wait();
|
|
||||||
}catch(InterruptedException e) {}
|
|
||||||
}
|
|
||||||
app.setHistoriqueAvailable(false);*/
|
|
||||||
System.out.println("Historique mis à jour lors de la reception");
|
|
||||||
Historique h = app.getHist(mh.getSource().getPseudo());
|
Historique h = app.getHist(mh.getSource().getPseudo());
|
||||||
h.addMessage(mh);
|
h.addMessage(mh);
|
||||||
app.majHistorique(h);
|
|
||||||
//app.setHistoriqueAvailable(true);
|
app.majHistorique(mh.getSource().getPseudo(), h);
|
||||||
//notifyAll();
|
|
||||||
//app.majHistorique2(mh,mh.getSource().getPseudo());
|
|
||||||
}
|
}
|
||||||
else if(mh.getType()==0) {
|
else if(mh.getType()==0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(line.split("::")[0].equals("Source")) {
|
else if(line.split(":")[0].equals("Source")) {
|
||||||
src = line+"\n";
|
src = line+"\n";
|
||||||
if(!u2Initialise) {
|
|
||||||
u2=Utilisateur.stringToUtilisateur(src.split("::")[1].replaceAll("\n", ""));
|
|
||||||
System.out.println("u2Initialise !");
|
|
||||||
u2Initialise = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if(line.split("::")[0].equals("Type")) {
|
else if(line.split(":")[0].equals("Type")) {
|
||||||
if(line.split("::")[1].equals("2")) {
|
if(line.split(":")[1].equals("2")) {
|
||||||
System.out.println("Bonjour recu!");
|
System.out.println("Bonjour recu!");
|
||||||
//System.out.println(src.split("::")[1].replaceAll("\n", ""));
|
//System.out.println(src.split(":")[1].replaceAll("\n", ""));
|
||||||
u2=Utilisateur.stringToUtilisateur(src.split("::")[1].replaceAll("\n", ""));
|
u2=Utilisateur.stringToUtilisateur(src.split(":")[1].replaceAll("\n", ""));
|
||||||
u2Initialise = true;
|
|
||||||
System.out.println("Pseudo du poto: >>"+u2.getPseudo()+"<<");
|
|
||||||
Thread t = new Thread(new RunnerTCPEnvoi(link,app,u2,true));
|
Thread t = new Thread(new RunnerTCPEnvoi(link,app,u2,true));
|
||||||
t.start();
|
t.start();
|
||||||
|
|
||||||
System.out.println("Thread d'envoi envoye");
|
System.out.println("Thread d'envoi envoye");
|
||||||
}
|
}
|
||||||
type = line+"\n";
|
type = line+"\n";
|
||||||
}
|
}
|
||||||
else if(line.split("::")[0].equals("Date")) {
|
else if(line.split(":")[0].equals("Date")) {
|
||||||
date = line+"\n";
|
date = line+"\n";
|
||||||
}
|
}
|
||||||
else if(line.split("::")[0].equals("Message")){
|
|
||||||
payload = line+"\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
payload += line+"\n";
|
payload += line+"\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("Received: "+ line);
|
System.out.println("Received: "+ line);
|
||||||
line = in.readLine();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
System.out.println("Affichage de l'histo");
|
|
||||||
System.out.println("Pseudo du poto: >>"+u2.getPseudo()+"<<");
|
|
||||||
app.getHist(u2.getPseudo()).afficher10derniers();
|
|
||||||
in.close();
|
in.close();
|
||||||
link.close();
|
link.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -305,11 +258,13 @@ class RunnerTCPEcoute implements Runnable {
|
||||||
} finally {
|
} finally {
|
||||||
System.out.println("Finishing thread");
|
System.out.println("Finishing thread");
|
||||||
System.out.println("Affichage de l'histo");
|
System.out.println("Affichage de l'histo");
|
||||||
System.out.println("Pseudo du poto: >>"+u2.getPseudo()+"<<");
|
app.getHist(u2.getPseudo()).afficher10derniers();
|
||||||
app.getHist(u2.getPseudo()).afficher10derniers();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue