From 99dcf249583516ac74d085402c469ad0bd324fec Mon Sep 17 00:00:00 2001 From: benassai Date: Fri, 4 Dec 2020 15:48:06 +0100 Subject: [PATCH] =?UTF-8?q?Progr=C3=A8s=20sur=20les=20sessions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clavardage/gestionnaireClavardage.java | 21 +++++++-- .../src/clavardage/sessionClavardage.java | 28 ++++++------ Projet_POO/src/clavardage/test.java | 38 +++++++++++----- Projet_POO/src/reseau/TCPClient.java | 14 +++--- Projet_POO/src/reseau/TCPServer.java | 2 +- Projet_POO/src/reseau/TCPServerThread.java | 43 ++++++++++++++++--- 6 files changed, 104 insertions(+), 42 deletions(-) diff --git a/Projet_POO/src/clavardage/gestionnaireClavardage.java b/Projet_POO/src/clavardage/gestionnaireClavardage.java index bad1b33..42c7e8f 100644 --- a/Projet_POO/src/clavardage/gestionnaireClavardage.java +++ b/Projet_POO/src/clavardage/gestionnaireClavardage.java @@ -1,4 +1,5 @@ package clavardage; +import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; @@ -15,6 +16,7 @@ public class gestionnaireClavardage implements Runnable{ private String host; private Thread thread; + //Ajouter la supppression des sessions de la liste après déconnexion //Remplacer par un singleton public gestionnaireClavardage(long id, int backlog, String host) { this.id = id; @@ -53,13 +55,24 @@ public class gestionnaireClavardage implements Runnable{ while (true) { Socket ssocket = this.requestServer.accept(); System.out.print("Données reçues sur le serveur de " + this.id + "\n"); - TCPClient client = new TCPClient(ssocket); - long idClient = Long.parseLong(client.receive()); + TCPServerThread client = new TCPServerThread(ssocket,false); + long idClient = -1; + + try { + idClient = Long.parseLong(client.receive()); + } + catch (IOException e) { + client.stop(); + } + + Thread t = new Thread(client); + t.start(); int i = 0; - while (i0 && i= this.sessions.size()) { + if (idClient == -1); + else if (i >= this.sessions.size()) { //Il n'existe pas encore de session entre les deux utilisateurs System.out.print("Nouvelle session sur le serveur de " + this.id + "\n"); TCPClient clientEnvoi = new TCPClient(client.getAdresseCible(), PORT_REQUETE_NOUVELLE_SESSION + (int) idClient); diff --git a/Projet_POO/src/clavardage/sessionClavardage.java b/Projet_POO/src/clavardage/sessionClavardage.java index a8ec0e9..f568c57 100644 --- a/Projet_POO/src/clavardage/sessionClavardage.java +++ b/Projet_POO/src/clavardage/sessionClavardage.java @@ -6,21 +6,33 @@ public class sessionClavardage { private long idDestination = 0; private TCPClient clientEmission = null; private TCPClient clientReception = null; - private String etat = null; public sessionClavardage(long idSource, long idDestination, TCPClient clientEmission, TCPClient clientReception) { this.idSource = idSource; this.idDestination = idDestination; this.clientEmission = clientEmission; this.clientReception = clientReception; - this.etat = "ReceptionConfig"; } public sessionClavardage(long idSource, long idDestination, TCPClient clientReception) { this.idSource = idSource; this.idDestination = idDestination; this.clientReception = clientReception; - this.etat = "Config"; + } + + public void send(String message) { + this.clientEmission.send(message); + } + + public void stop() { + if (this.clientEmission != null) this.clientEmission.stop(); + if (this.clientReception != null) this.clientReception.stop(); + } + + + public String toString() { + return "Session entre " + this.idSource + " à l'adresse " + this.clientEmission.getAdresseSource() + + ", et " + this.idDestination + " à l'adresse " + this.clientEmission.getAdresseCible() + "\n"; } public long getIdSource() { @@ -39,16 +51,6 @@ public class sessionClavardage { this.clientReception = client; } - public void stop() { - if (this.clientEmission != null) this.clientEmission.stop(); - if (this.clientReception != null) this.clientReception.stop(); - } - - public String toString() { - return "Session entre " + this.idSource + " à l'adresse " + this.clientEmission.getAdresseSource() - + ", et " + this.idDestination + " à l'adresse " + this.clientEmission.getAdresseCible() + "\n"; - } - //public void run() { //} diff --git a/Projet_POO/src/clavardage/test.java b/Projet_POO/src/clavardage/test.java index 36c2129..0d25c9a 100644 --- a/Projet_POO/src/clavardage/test.java +++ b/Projet_POO/src/clavardage/test.java @@ -1,5 +1,7 @@ package clavardage; +import java.util.ArrayList; + public class test { public test() { @@ -7,22 +9,38 @@ public class test { } public static void main(String[] args) { - gestionnaireClavardage gc1 = new gestionnaireClavardage(14, 5, "localhost"); - gestionnaireClavardage gc2 = new gestionnaireClavardage(24, 5, "localhost"); - gc2.createSession(14); + ArrayList l = new ArrayList(); + int i; + for (i = 0; i < 15; i++) { + gestionnaireClavardage gc = new gestionnaireClavardage(i * 10 + 4, 5, "localhost"); + l.add(gc); + if (i>=1) gc.createSession(4); + } + try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } - System.out.print("Nb de sessions de gc1: " + gc1.getSessions().size() + "\n"); - gc1.printSessions(); - System.out.print("Nb de sessions de gc2: " + gc2.getSessions().size() + "\n"); - gc2.printSessions(); - gc1.fermerSessions(); - gc2.fermerSessions(); + System.out.print("Nb de sessions de gc0: " + l.get(0).getSessions().size() + "\n"); + l.get(0).printSessions(); + System.out.print("Nb de sessions de gc2: " + l.get(1).getSessions().size() + "\n"); + l.get(1).printSessions(); + for (i=0; i