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:
Marino Benassai 2020-12-07 16:51:31 +01:00
parent 465232c582
commit 6832c6be03
10 changed files with 48 additions and 25 deletions

View file

@ -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;

View file

@ -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");

View file

@ -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");

View file

@ -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();

View file

@ -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();

View file

@ -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");
} }

View file

@ -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) {

View file

@ -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));

View file

@ -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) {}

View file

@ -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);