From 3ebb86ea89daf5529f861b4502bcbf7155f9b124 Mon Sep 17 00:00:00 2001 From: benassai Date: Mon, 7 Dec 2020 14:49:42 +0100 Subject: [PATCH] Copie de udpunicastclient --- .../clavardage/gestionnaireClavardage.java | 53 ++++++++++--------- .../src/clavardage/sessionClavardage.java | 12 ++--- Projet_POO/src/clavardage/test.java | 10 ++-- Projet_POO/src/liste/UdpUnicastClient2.java | 47 ++++++++++++++++ Projet_POO/src/reseau/TCPClient.java | 1 + 5 files changed, 88 insertions(+), 35 deletions(-) create mode 100644 Projet_POO/src/liste/UdpUnicastClient2.java diff --git a/Projet_POO/src/clavardage/gestionnaireClavardage.java b/Projet_POO/src/clavardage/gestionnaireClavardage.java index 99ca6e9..effe131 100644 --- a/Projet_POO/src/clavardage/gestionnaireClavardage.java +++ b/Projet_POO/src/clavardage/gestionnaireClavardage.java @@ -7,41 +7,41 @@ import java.net.Socket; import java.net.SocketAddress; import java.util.ArrayList; +import nom.GestionnaireNom; import reseau.*; import ui.DiscussionUI; 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 sessions = new ArrayList(); private TCPServer requestServer; - private long id; - private String host; private Thread thread; - public static gestionnaireClavardage instance(long id, int backlog, String host) { + public static gestionnaireClavardage instance() { if (uniqueInstance == null) { - uniqueInstance = new gestionnaireClavardage(id, backlog, host); + uniqueInstance = new gestionnaireClavardage(BACKLOG); } return gestionnaireClavardage.uniqueInstance; } //Ajouter la supppression des sessions de la liste après déconnexion //Remplacer par un singleton - private gestionnaireClavardage(long id, int backlog, String host) { - this.id = id; - this.host = host; - this.requestServer = new TCPServer(this.host, backlog, PORT_REQUETE_NOUVELLE_SESSION + (int) id); + private gestionnaireClavardage(int backlog) { + GestionnaireNom gn = GestionnaireNom.instance(); + this.requestServer = new TCPServer(gn.getIp(), backlog, PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId())); this.thread = new Thread(this); this.thread.start(); } - public void createSession(long id) { - TCPClient client = new TCPClient("localhost", PORT_REQUETE_NOUVELLE_SESSION + (int) id); - sessionClavardage session = new sessionClavardage(this.id, id, client, null); + 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); this.sessions.add(session); - client.send(Long.toString(this.id)+"\n"); - System.out.print("Paramètres de session envoyée à " + id + "\n"); + client.send(gn.getId()+"\n"); + System.out.print("Paramètres de session envoyée à " + gn.idFromNom(name) + "\n"); //Lancement de la fenêtre de session EventQueue.invokeLater(new Runnable() { @@ -74,14 +74,15 @@ public class gestionnaireClavardage implements Runnable{ public void run() { + GestionnaireNom gn = GestionnaireNom.instance(); while (true) { Socket ssocket = this.requestServer.accept(); - System.out.print("Données reçues sur le serveur de " + this.id + "\n"); + System.out.print("Données reçues sur le serveur de " + gn.getId() + "\n"); TCPServerThread client = new TCPServerThread(ssocket,false); - long idClient = -1; + String idClient = null; try { - idClient = Long.parseLong(client.receive()); + idClient = client.receive(); } catch (IOException e) { client.stop(); @@ -90,18 +91,18 @@ public class gestionnaireClavardage implements Runnable{ Thread t = new Thread(client); t.start(); int i = 0; - while (idClient>0 && 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); - sessionClavardage session = new sessionClavardage(this.id, idClient, clientEnvoi, client); + 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); this.sessions.add(session); - clientEnvoi.send(Long.toString(id)+"\n"); - System.out.print("Fin de la configuration de " + this.id + "\n"); + clientEnvoi.send(gn.getId()+"\n"); + System.out.print("Fin de la configuration de " + gn.getId() + "\n"); //Lancement de la fenêtre de session EventQueue.invokeLater(new Runnable() { @@ -116,15 +117,15 @@ public class gestionnaireClavardage implements Runnable{ }); } else if (this.sessions.get(i).getClientReception() == null) { - System.out.print("Suite de la configuration sur le serveur de " + this.id + "\n"); + System.out.print("Suite de la configuration sur le serveur de " + gn.getId() + "\n"); //il existe une session entre les deux utilisateurs, mais la phase de configuration n'est pas terminée this.sessions.get(i).setClientReception(client); - System.out.print("Fin de la configuration de " + this.id + "\n"); + System.out.print("Fin de la configuration de " + gn.getId() + "\n"); } else { //Il existe déjà une connexion établie entre les deux machines - System.out.print("Tentative de session multiple sur le serveur de " + this.id + "\n"); + System.out.print("Tentative de session multiple sur le serveur de " + gn.getId() + "\n"); client.stop(); } diff --git a/Projet_POO/src/clavardage/sessionClavardage.java b/Projet_POO/src/clavardage/sessionClavardage.java index f568c57..9f8970c 100644 --- a/Projet_POO/src/clavardage/sessionClavardage.java +++ b/Projet_POO/src/clavardage/sessionClavardage.java @@ -2,19 +2,19 @@ package clavardage; import reseau.*; public class sessionClavardage { - private long idSource = 0; - private long idDestination = 0; + private String idSource = null; + private String idDestination = null; private TCPClient clientEmission = null; private TCPClient clientReception = null; - public sessionClavardage(long idSource, long 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(long idSource, long idDestination, TCPClient clientReception) { + public sessionClavardage(String idSource, String idDestination, TCPClient clientReception) { this.idSource = idSource; this.idDestination = idDestination; this.clientReception = clientReception; @@ -35,11 +35,11 @@ public class sessionClavardage { + ", et " + this.idDestination + " à l'adresse " + this.clientEmission.getAdresseCible() + "\n"; } - public long getIdSource() { + public String getIdSource() { return this.idSource; } - public long getIdDestination() { + public String getIdDestination() { return this.idDestination; } diff --git a/Projet_POO/src/clavardage/test.java b/Projet_POO/src/clavardage/test.java index cd75825..1b8131f 100644 --- a/Projet_POO/src/clavardage/test.java +++ b/Projet_POO/src/clavardage/test.java @@ -3,6 +3,7 @@ package clavardage; import java.awt.EventQueue; import java.util.ArrayList; +import nom.GestionnaireNom; import ui.DiscussionUI; public class test { @@ -46,9 +47,12 @@ public class test { } */ public static void main(String[] args) { - - gestionnaireClavardage gc = gestionnaireClavardage.instance(11, 5, "localhost"); - gc.createSession(10); + GestionnaireNom gn = GestionnaireNom.instance(); + gn.setId("11"); + gn.setIp("localhost"); + gn.setNom("User2"); + gestionnaireClavardage gc = gestionnaireClavardage.instance(); + gc.createSession("User1"); } diff --git a/Projet_POO/src/liste/UdpUnicastClient2.java b/Projet_POO/src/liste/UdpUnicastClient2.java new file mode 100644 index 0000000..3402630 --- /dev/null +++ b/Projet_POO/src/liste/UdpUnicastClient2.java @@ -0,0 +1,47 @@ +package liste; + +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.net.SocketException; +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.UnknownHostException; + +public class UdpUnicastClient2 implements Runnable{ + + private final int serverPort; + private final String serverIP; + + public UdpUnicastClient2(int serverPort, String serverIP) { + this.serverPort = serverPort; + this.serverIP = serverIP; + + } + + + public void run() { + try(DatagramSocket serverSocket = new DatagramSocket()){ + //for (int i = 0; i<3; i++) { + String message = "add$$$" + 77 + "$$$Roger$$$LocalHost"; //ordre$$$id$$$nom$$$ip + DatagramPacket datagramPacket = new DatagramPacket( + message.getBytes(), + message.length(), + InetAddress.getByName(serverIP), + serverPort + ); + serverSocket.send(datagramPacket); + //} + + } catch (SocketException e) { + e.printStackTrace(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + + + } + +} diff --git a/Projet_POO/src/reseau/TCPClient.java b/Projet_POO/src/reseau/TCPClient.java index 599de18..a4b2eab 100644 --- a/Projet_POO/src/reseau/TCPClient.java +++ b/Projet_POO/src/reseau/TCPClient.java @@ -31,6 +31,7 @@ public class TCPClient { System.out.print("Could not find host\n"); } catch (IOException e) { + System.out.print("port= "+port+" host= "+host+"\n"); System.out.print("Could not create socket\n"); } this.adresseCible = socket.getInetAddress();