Interface graphique + gestion des noms, de la liste de nom, et des
sessions, fonctionnent (dans certains cas précis, de manière limitée dans le temps).
This commit is contained in:
parent
465232c582
commit
6832c6be03
10 changed files with 48 additions and 25 deletions
|
@ -1,20 +1,20 @@
|
||||||
package clavardage;
|
package clavardage;
|
||||||
import reseau.*;
|
import reseau.*;
|
||||||
|
|
||||||
public class sessionClavardage {
|
public class SessionClavardage {
|
||||||
private String idSource = null;
|
private String idSource = null;
|
||||||
private String idDestination = null;
|
private String idDestination = null;
|
||||||
private TCPClient clientEmission = null;
|
private TCPClient clientEmission = null;
|
||||||
private TCPClient clientReception = null;
|
private TCPClient clientReception = null;
|
||||||
|
|
||||||
public sessionClavardage(String idSource, String idDestination, TCPClient clientEmission, TCPClient clientReception) {
|
public SessionClavardage(String idSource, String idDestination, TCPClient clientEmission, TCPClient clientReception) {
|
||||||
this.idSource = idSource;
|
this.idSource = idSource;
|
||||||
this.idDestination = idDestination;
|
this.idDestination = idDestination;
|
||||||
this.clientEmission = clientEmission;
|
this.clientEmission = clientEmission;
|
||||||
this.clientReception = clientReception;
|
this.clientReception = clientReception;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sessionClavardage(String idSource, String idDestination, TCPClient clientReception) {
|
public SessionClavardage(String idSource, String idDestination, TCPClient clientReception) {
|
||||||
this.idSource = idSource;
|
this.idSource = idSource;
|
||||||
this.idDestination = idDestination;
|
this.idDestination = idDestination;
|
||||||
this.clientReception = clientReception;
|
this.clientReception = clientReception;
|
|
@ -15,7 +15,7 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
public static final int PORT_REQUETE_NOUVELLE_SESSION = 19999;
|
public static final int PORT_REQUETE_NOUVELLE_SESSION = 19999;
|
||||||
public static final int BACKLOG = 10;
|
public static final int BACKLOG = 10;
|
||||||
private static gestionnaireClavardage uniqueInstance = null;
|
private static gestionnaireClavardage uniqueInstance = null;
|
||||||
private ArrayList<sessionClavardage> sessions = new ArrayList<sessionClavardage>();
|
private ArrayList<SessionClavardage> sessions = new ArrayList<SessionClavardage>();
|
||||||
private TCPServer requestServer;
|
private TCPServer requestServer;
|
||||||
private Thread thread;
|
private Thread thread;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
//Remplacer par un singleton
|
//Remplacer par un singleton
|
||||||
private gestionnaireClavardage(int backlog) {
|
private gestionnaireClavardage(int backlog) {
|
||||||
GestionnaireNom gn = GestionnaireNom.instance();
|
GestionnaireNom gn = GestionnaireNom.instance();
|
||||||
this.requestServer = new TCPServer(gn.getIp(), backlog, PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId()));
|
this.requestServer = new TCPServer("localhost", backlog, PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId()));
|
||||||
this.thread = new Thread(this);
|
this.thread = new Thread(this);
|
||||||
this.thread.start();
|
this.thread.start();
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
public void createSession(String name) {
|
public void createSession(String name) {
|
||||||
GestionnaireNom gn = GestionnaireNom.instance();
|
GestionnaireNom gn = GestionnaireNom.instance();
|
||||||
TCPClient client = new TCPClient(gn.ipFromNom(name), PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.idFromNom(name))) ;
|
TCPClient client = new TCPClient(gn.ipFromNom(name), PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.idFromNom(name))) ;
|
||||||
sessionClavardage session = new sessionClavardage(gn.getId(), gn.idFromNom(name), client, null);
|
SessionClavardage session = new SessionClavardage(gn.getId(), gn.idFromNom(name), client, null);
|
||||||
this.sessions.add(session);
|
this.sessions.add(session);
|
||||||
client.send(gn.getId()+"\n");
|
client.send(gn.getId()+"\n");
|
||||||
System.out.print("Paramètres de session envoyée à " + gn.idFromNom(name) + "\n");
|
System.out.print("Paramètres de session envoyée à " + gn.idFromNom(name) + "\n");
|
||||||
|
@ -56,18 +56,18 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<sessionClavardage> getSessions() {
|
public ArrayList<SessionClavardage> getSessions() {
|
||||||
return this.sessions;
|
return this.sessions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fermerSessions() {
|
public void fermerSessions() {
|
||||||
for (sessionClavardage s : this.sessions) {
|
for (SessionClavardage s : this.sessions) {
|
||||||
s.stop();
|
s.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void printSessions() {
|
public void printSessions() {
|
||||||
for (sessionClavardage s : sessions) {
|
for (SessionClavardage s : sessions) {
|
||||||
System.out.print(s);
|
System.out.print(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,8 +76,10 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
|
|
||||||
GestionnaireNom gn = GestionnaireNom.instance();
|
GestionnaireNom gn = GestionnaireNom.instance();
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
||||||
Socket ssocket = this.requestServer.accept();
|
Socket ssocket = this.requestServer.accept();
|
||||||
System.out.print("Données reçues sur le serveur de " + gn.getId() + "\n");
|
System.out.print("Données reçues sur le serveur de " + gn.getId() + "\n");
|
||||||
|
for (SessionClavardage s : this.sessions) System.out.print(s);
|
||||||
TCPServerThread client = new TCPServerThread(ssocket,false);
|
TCPServerThread client = new TCPServerThread(ssocket,false);
|
||||||
String idClient = null;
|
String idClient = null;
|
||||||
|
|
||||||
|
@ -91,7 +93,7 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
Thread t = new Thread(client);
|
Thread t = new Thread(client);
|
||||||
t.start();
|
t.start();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (idClient != null && i<this.sessions.size() && this.sessions.get(i).getIdDestination() != idClient) {
|
while (idClient != null && i<this.sessions.size() && !this.sessions.get(i).getIdDestination().equals(idClient)) {
|
||||||
i+=1;
|
i+=1;
|
||||||
}
|
}
|
||||||
if (idClient == null);
|
if (idClient == null);
|
||||||
|
@ -99,7 +101,7 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
//Il n'existe pas encore de session entre les deux utilisateurs
|
//Il n'existe pas encore de session entre les deux utilisateurs
|
||||||
System.out.print("Nouvelle session sur le serveur de " + gn.getId() + "\n");
|
System.out.print("Nouvelle session sur le serveur de " + gn.getId() + "\n");
|
||||||
TCPClient clientEnvoi = new TCPClient(client.getAdresseCible(), PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(idClient));
|
TCPClient clientEnvoi = new TCPClient(client.getAdresseCible(), PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(idClient));
|
||||||
sessionClavardage session = new sessionClavardage(gn.getId(), idClient, clientEnvoi, client);
|
SessionClavardage session = new SessionClavardage(gn.getId(), idClient, clientEnvoi, client);
|
||||||
this.sessions.add(session);
|
this.sessions.add(session);
|
||||||
clientEnvoi.send(gn.getId()+"\n");
|
clientEnvoi.send(gn.getId()+"\n");
|
||||||
System.out.print("Fin de la configuration de " + gn.getId() + "\n");
|
System.out.print("Fin de la configuration de " + gn.getId() + "\n");
|
||||||
|
|
|
@ -3,6 +3,8 @@ package clavardage;
|
||||||
import java.awt.EventQueue;
|
import java.awt.EventQueue;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import liste.GestionnaireListeUtilisateur;
|
||||||
|
import liste.TypeListeUtilisateur;
|
||||||
import nom.GestionnaireNom;
|
import nom.GestionnaireNom;
|
||||||
import ui.DiscussionUI;
|
import ui.DiscussionUI;
|
||||||
|
|
||||||
|
@ -47,6 +49,11 @@ public class test {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
GestionnaireListeUtilisateur glu = GestionnaireListeUtilisateur.instance();
|
||||||
|
ArrayList<TypeListeUtilisateur> list = new ArrayList<TypeListeUtilisateur>();
|
||||||
|
list.add(new TypeListeUtilisateur("10", "User1", "localhost"));
|
||||||
|
list.add(new TypeListeUtilisateur("11", "User2", "localhost"));
|
||||||
|
glu.setListeUtilisateur(list);
|
||||||
GestionnaireNom gn = GestionnaireNom.instance();
|
GestionnaireNom gn = GestionnaireNom.instance();
|
||||||
gn.setId("11");
|
gn.setId("11");
|
||||||
gn.setIp("localhost");
|
gn.setIp("localhost");
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package defaut;
|
package defaut;
|
||||||
|
|
||||||
|
import clavardage.gestionnaireClavardage;
|
||||||
import liste.GestionnaireListeUtilisateur;
|
import liste.GestionnaireListeUtilisateur;
|
||||||
import ui.Login_RegisterUI;
|
import ui.Login_RegisterUI;
|
||||||
|
|
||||||
|
@ -8,16 +9,27 @@ import ui.Login_RegisterUI;
|
||||||
public class Main {
|
public class Main {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
|
||||||
//on lance le server d'écoute de cmd
|
//on lance le server d'écoute de cmd
|
||||||
GestionnaireListeUtilisateur.instance().ecoute2(PORT); //enlever le 2, debug //TODO PORT = 2000 à 2009
|
GestionnaireListeUtilisateur.instance().ecoute2(2002); //enlever le 2, debug //TODO PORT = 2000 à 2009
|
||||||
|
|
||||||
//on crée manuellement des utilisateurs
|
//on crée manuellement des utilisateurs
|
||||||
GestionnaireListeUtilisateur.instance().envoie("add$$$77$$$Moi$$$LocalHost");
|
//GestionnaireListeUtilisateur.instance().envoie2("add$$$77$$$Moi$$$LocalHost");
|
||||||
|
|
||||||
|
|
||||||
//on met à jour notre liste
|
//on met à jour notre liste
|
||||||
GestionnaireListeUtilisateur.instance().majListe2();
|
GestionnaireListeUtilisateur.instance().majListe2();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
Thread.sleep(0);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
//on lance le UI
|
//on lance le UI
|
||||||
Thread t = new Thread(new Login_RegisterUI());
|
Thread t = new Thread(new Login_RegisterUI());
|
||||||
t.start();
|
t.start();
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class TraitementCmdListe implements Runnable{
|
||||||
String ip = cmd[3];
|
String ip = cmd[3];
|
||||||
|
|
||||||
if (ordre.equals("listRequest")) {
|
if (ordre.equals("listRequest")) {
|
||||||
envoyerNom();
|
for (int i = 2000; i<2010; i++) envoyerNom2(i); //TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
semaphore.acquireUninterruptibly();
|
semaphore.acquireUninterruptibly();
|
||||||
|
|
|
@ -31,6 +31,7 @@ public class TCPClient {
|
||||||
System.out.print("Could not find host\n");
|
System.out.print("Could not find host\n");
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
System.out.print("port= "+port+" host= "+host+"\n");
|
System.out.print("port= "+port+" host= "+host+"\n");
|
||||||
System.out.print("Could not create socket\n");
|
System.out.print("Could not create socket\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ public class TCPServer {
|
||||||
public Socket accept() {
|
public Socket accept() {
|
||||||
Socket ssocket = null;
|
Socket ssocket = null;
|
||||||
try {
|
try {
|
||||||
|
System.out.print("En attente de connexions sur le port "+ this.port +", pour l'adresse " + host + "\n");
|
||||||
ssocket = this.socket.accept();
|
ssocket = this.socket.accept();
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
||||||
private JPanel contentPane;
|
private JPanel contentPane;
|
||||||
private JTextField textField;
|
private JTextField textField;
|
||||||
private JTextArea historicField;
|
private JTextArea historicField;
|
||||||
private sessionClavardage session;
|
private SessionClavardage session;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Launch the application.
|
* Launch the application.
|
||||||
|
@ -52,12 +52,14 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
||||||
/**
|
/**
|
||||||
* Create the frame.
|
* Create the frame.
|
||||||
*/
|
*/
|
||||||
public DiscussionUI(sessionClavardage session) {
|
public DiscussionUI(SessionClavardage session) {
|
||||||
this.session = session;
|
this.session = session;
|
||||||
|
|
||||||
|
while (this.session.getClientReception() == null); //On attends que le client soit configuré
|
||||||
this.session.getClientReception().addPropertyChangeListener(this);;
|
this.session.getClientReception().addPropertyChangeListener(this);;
|
||||||
|
|
||||||
setTitle("Discussion");
|
setTitle("Discussion");
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||||
setBounds(100, 100, 450, 300);
|
setBounds(100, 100, 450, 300);
|
||||||
contentPane = new JPanel();
|
contentPane = new JPanel();
|
||||||
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||||
|
|
|
@ -10,6 +10,7 @@ import javax.swing.JLabel;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
import javax.swing.table.DefaultTableModel;
|
import javax.swing.table.DefaultTableModel;
|
||||||
|
|
||||||
|
import clavardage.gestionnaireClavardage;
|
||||||
import liste.GestionnaireListeUtilisateur;
|
import liste.GestionnaireListeUtilisateur;
|
||||||
import nom.GestionnaireNom;
|
import nom.GestionnaireNom;
|
||||||
import liste.TypeListeUtilisateur;
|
import liste.TypeListeUtilisateur;
|
||||||
|
@ -60,7 +61,7 @@ public class ListUI extends JFrame implements Runnable{
|
||||||
* Create the frame.
|
* Create the frame.
|
||||||
*/
|
*/
|
||||||
public ListUI() {
|
public ListUI() {
|
||||||
setTitle("List");
|
setTitle(GestionnaireNom.instance().getId());
|
||||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
setBounds(100, 100, 450, 300);
|
setBounds(100, 100, 450, 300);
|
||||||
contentPane = new JPanel();
|
contentPane = new JPanel();
|
||||||
|
@ -75,13 +76,8 @@ public class ListUI extends JFrame implements Runnable{
|
||||||
int col = table.getSelectedColumn();
|
int col = table.getSelectedColumn();
|
||||||
try{
|
try{
|
||||||
String nom = (String) table.getValueAt(row, col);
|
String nom = (String) table.getValueAt(row, col);
|
||||||
System.out.println(nom);
|
gestionnaireClavardage gc = gestionnaireClavardage.instance();
|
||||||
|
gc.createSession(nom);
|
||||||
test.add("1");
|
|
||||||
test.add("2");
|
|
||||||
test.add("3");
|
|
||||||
ajouterNomListe(dtm, test);
|
|
||||||
//String id = GestionnaireNom.idFromNom(nom);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e) {}
|
catch (Exception e) {}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import javax.swing.JFrame;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
|
|
||||||
|
import clavardage.gestionnaireClavardage;
|
||||||
import liste.GestionnaireListeUtilisateur;
|
import liste.GestionnaireListeUtilisateur;
|
||||||
import liste.TypeListeUtilisateur;
|
import liste.TypeListeUtilisateur;
|
||||||
import nom.GestionnaireNom;
|
import nom.GestionnaireNom;
|
||||||
|
@ -75,6 +76,7 @@ public class Login_RegisterUI extends JFrame implements Runnable{
|
||||||
if( pwd.equals("admin") || id.equals("0") ) { //remplaver || par && -> facilite debug
|
if( pwd.equals("admin") || id.equals("0") ) { //remplaver || par && -> facilite debug
|
||||||
|
|
||||||
GestionnaireNom.instance().setId(id);
|
GestionnaireNom.instance().setId(id);
|
||||||
|
gestionnaireClavardage.instance(); //Init(gestionnaireClavardage)
|
||||||
|
|
||||||
//NomUI nom = new NomUI();
|
//NomUI nom = new NomUI();
|
||||||
//nom.setLocationRelativeTo(null);
|
//nom.setLocationRelativeTo(null);
|
||||||
|
|
Loading…
Reference in a new issue