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;
|
||||
import reseau.*;
|
||||
|
||||
public class sessionClavardage {
|
||||
public class SessionClavardage {
|
||||
private String idSource = null;
|
||||
private String idDestination = null;
|
||||
private TCPClient clientEmission = 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.idDestination = idDestination;
|
||||
this.clientEmission = clientEmission;
|
||||
this.clientReception = clientReception;
|
||||
}
|
||||
|
||||
public sessionClavardage(String idSource, String idDestination, TCPClient clientReception) {
|
||||
public SessionClavardage(String idSource, String idDestination, TCPClient clientReception) {
|
||||
this.idSource = idSource;
|
||||
this.idDestination = idDestination;
|
||||
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 BACKLOG = 10;
|
||||
private static gestionnaireClavardage uniqueInstance = null;
|
||||
private ArrayList<sessionClavardage> sessions = new ArrayList<sessionClavardage>();
|
||||
private ArrayList<SessionClavardage> sessions = new ArrayList<SessionClavardage>();
|
||||
private TCPServer requestServer;
|
||||
private Thread thread;
|
||||
|
||||
|
@ -30,7 +30,7 @@ public class gestionnaireClavardage implements Runnable{
|
|||
//Remplacer par un singleton
|
||||
private gestionnaireClavardage(int backlog) {
|
||||
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.start();
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ public class gestionnaireClavardage implements Runnable{
|
|||
public void createSession(String name) {
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
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);
|
||||
client.send(gn.getId()+"\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;
|
||||
}
|
||||
|
||||
public void fermerSessions() {
|
||||
for (sessionClavardage s : this.sessions) {
|
||||
for (SessionClavardage s : this.sessions) {
|
||||
s.stop();
|
||||
}
|
||||
}
|
||||
|
||||
public void printSessions() {
|
||||
for (sessionClavardage s : sessions) {
|
||||
for (SessionClavardage s : sessions) {
|
||||
System.out.print(s);
|
||||
}
|
||||
}
|
||||
|
@ -76,8 +76,10 @@ public class gestionnaireClavardage implements Runnable{
|
|||
|
||||
GestionnaireNom gn = GestionnaireNom.instance();
|
||||
while (true) {
|
||||
|
||||
Socket ssocket = this.requestServer.accept();
|
||||
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);
|
||||
String idClient = null;
|
||||
|
||||
|
@ -91,7 +93,7 @@ public class gestionnaireClavardage implements Runnable{
|
|||
Thread t = new Thread(client);
|
||||
t.start();
|
||||
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;
|
||||
}
|
||||
if (idClient == null);
|
||||
|
@ -99,7 +101,7 @@ public class gestionnaireClavardage implements Runnable{
|
|||
//Il n'existe pas encore de session entre les deux utilisateurs
|
||||
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));
|
||||
sessionClavardage session = new sessionClavardage(gn.getId(), idClient, clientEnvoi, client);
|
||||
SessionClavardage session = new SessionClavardage(gn.getId(), idClient, clientEnvoi, client);
|
||||
this.sessions.add(session);
|
||||
clientEnvoi.send(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.util.ArrayList;
|
||||
|
||||
import liste.GestionnaireListeUtilisateur;
|
||||
import liste.TypeListeUtilisateur;
|
||||
import nom.GestionnaireNom;
|
||||
import ui.DiscussionUI;
|
||||
|
||||
|
@ -47,6 +49,11 @@ public class test {
|
|||
}
|
||||
*/
|
||||
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();
|
||||
gn.setId("11");
|
||||
gn.setIp("localhost");
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package defaut;
|
||||
|
||||
import clavardage.gestionnaireClavardage;
|
||||
import liste.GestionnaireListeUtilisateur;
|
||||
import ui.Login_RegisterUI;
|
||||
|
||||
|
@ -8,16 +9,27 @@ import ui.Login_RegisterUI;
|
|||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
|
||||
//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
|
||||
GestionnaireListeUtilisateur.instance().envoie("add$$$77$$$Moi$$$LocalHost");
|
||||
//GestionnaireListeUtilisateur.instance().envoie2("add$$$77$$$Moi$$$LocalHost");
|
||||
|
||||
|
||||
//on met à jour notre liste
|
||||
GestionnaireListeUtilisateur.instance().majListe2();
|
||||
|
||||
|
||||
|
||||
try {
|
||||
Thread.sleep(0);
|
||||
} catch (InterruptedException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//on lance le UI
|
||||
Thread t = new Thread(new Login_RegisterUI());
|
||||
t.start();
|
||||
|
|
|
@ -31,7 +31,7 @@ public class TraitementCmdListe implements Runnable{
|
|||
String ip = cmd[3];
|
||||
|
||||
if (ordre.equals("listRequest")) {
|
||||
envoyerNom();
|
||||
for (int i = 2000; i<2010; i++) envoyerNom2(i); //TODO
|
||||
}
|
||||
|
||||
semaphore.acquireUninterruptibly();
|
||||
|
|
|
@ -31,6 +31,7 @@ public class TCPClient {
|
|||
System.out.print("Could not find host\n");
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
System.out.print("port= "+port+" host= "+host+"\n");
|
||||
System.out.print("Could not create socket\n");
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ public class TCPServer {
|
|||
public Socket accept() {
|
||||
Socket ssocket = null;
|
||||
try {
|
||||
System.out.print("En attente de connexions sur le port "+ this.port +", pour l'adresse " + host + "\n");
|
||||
ssocket = this.socket.accept();
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
|
|
@ -23,7 +23,7 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
private JPanel contentPane;
|
||||
private JTextField textField;
|
||||
private JTextArea historicField;
|
||||
private sessionClavardage session;
|
||||
private SessionClavardage session;
|
||||
|
||||
/**
|
||||
* Launch the application.
|
||||
|
@ -52,12 +52,14 @@ public class DiscussionUI extends JFrame implements PropertyChangeListener{
|
|||
/**
|
||||
* Create the frame.
|
||||
*/
|
||||
public DiscussionUI(sessionClavardage session) {
|
||||
public DiscussionUI(SessionClavardage session) {
|
||||
this.session = session;
|
||||
|
||||
while (this.session.getClientReception() == null); //On attends que le client soit configuré
|
||||
this.session.getClientReception().addPropertyChangeListener(this);;
|
||||
|
||||
setTitle("Discussion");
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
|
||||
setBounds(100, 100, 450, 300);
|
||||
contentPane = new JPanel();
|
||||
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
|
||||
|
|
|
@ -10,6 +10,7 @@ import javax.swing.JLabel;
|
|||
import javax.swing.JTable;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
|
||||
import clavardage.gestionnaireClavardage;
|
||||
import liste.GestionnaireListeUtilisateur;
|
||||
import nom.GestionnaireNom;
|
||||
import liste.TypeListeUtilisateur;
|
||||
|
@ -60,7 +61,7 @@ public class ListUI extends JFrame implements Runnable{
|
|||
* Create the frame.
|
||||
*/
|
||||
public ListUI() {
|
||||
setTitle("List");
|
||||
setTitle(GestionnaireNom.instance().getId());
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
setBounds(100, 100, 450, 300);
|
||||
contentPane = new JPanel();
|
||||
|
@ -75,13 +76,8 @@ public class ListUI extends JFrame implements Runnable{
|
|||
int col = table.getSelectedColumn();
|
||||
try{
|
||||
String nom = (String) table.getValueAt(row, col);
|
||||
System.out.println(nom);
|
||||
|
||||
test.add("1");
|
||||
test.add("2");
|
||||
test.add("3");
|
||||
ajouterNomListe(dtm, test);
|
||||
//String id = GestionnaireNom.idFromNom(nom);
|
||||
gestionnaireClavardage gc = gestionnaireClavardage.instance();
|
||||
gc.createSession(nom);
|
||||
|
||||
}
|
||||
catch (Exception e) {}
|
||||
|
|
|
@ -7,6 +7,7 @@ import javax.swing.JFrame;
|
|||
import javax.swing.JPanel;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
|
||||
import clavardage.gestionnaireClavardage;
|
||||
import liste.GestionnaireListeUtilisateur;
|
||||
import liste.TypeListeUtilisateur;
|
||||
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
|
||||
|
||||
GestionnaireNom.instance().setId(id);
|
||||
gestionnaireClavardage.instance(); //Init(gestionnaireClavardage)
|
||||
|
||||
//NomUI nom = new NomUI();
|
||||
//nom.setLocationRelativeTo(null);
|
||||
|
|
Loading…
Reference in a new issue