Copie de udpunicastclient
This commit is contained in:
parent
d3b512b620
commit
3ebb86ea89
5 changed files with 88 additions and 35 deletions
|
@ -7,41 +7,41 @@ import java.net.Socket;
|
||||||
import java.net.SocketAddress;
|
import java.net.SocketAddress;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import nom.GestionnaireNom;
|
||||||
import reseau.*;
|
import reseau.*;
|
||||||
import ui.DiscussionUI;
|
import ui.DiscussionUI;
|
||||||
|
|
||||||
public class gestionnaireClavardage implements Runnable{
|
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;
|
||||||
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 long id;
|
|
||||||
private String host;
|
|
||||||
private Thread thread;
|
private Thread thread;
|
||||||
|
|
||||||
public static gestionnaireClavardage instance(long id, int backlog, String host) {
|
public static gestionnaireClavardage instance() {
|
||||||
if (uniqueInstance == null) {
|
if (uniqueInstance == null) {
|
||||||
uniqueInstance = new gestionnaireClavardage(id, backlog, host);
|
uniqueInstance = new gestionnaireClavardage(BACKLOG);
|
||||||
}
|
}
|
||||||
return gestionnaireClavardage.uniqueInstance;
|
return gestionnaireClavardage.uniqueInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ajouter la supppression des sessions de la liste après déconnexion
|
//Ajouter la supppression des sessions de la liste après déconnexion
|
||||||
//Remplacer par un singleton
|
//Remplacer par un singleton
|
||||||
private gestionnaireClavardage(long id, int backlog, String host) {
|
private gestionnaireClavardage(int backlog) {
|
||||||
this.id = id;
|
GestionnaireNom gn = GestionnaireNom.instance();
|
||||||
this.host = host;
|
this.requestServer = new TCPServer(gn.getIp(), backlog, PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(gn.getId()));
|
||||||
this.requestServer = new TCPServer(this.host, backlog, PORT_REQUETE_NOUVELLE_SESSION + (int) id);
|
|
||||||
this.thread = new Thread(this);
|
this.thread = new Thread(this);
|
||||||
this.thread.start();
|
this.thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createSession(long id) {
|
public void createSession(String name) {
|
||||||
TCPClient client = new TCPClient("localhost", PORT_REQUETE_NOUVELLE_SESSION + (int) id);
|
GestionnaireNom gn = GestionnaireNom.instance();
|
||||||
sessionClavardage session = new sessionClavardage(this.id, id, client, null);
|
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);
|
this.sessions.add(session);
|
||||||
client.send(Long.toString(this.id)+"\n");
|
client.send(gn.getId()+"\n");
|
||||||
System.out.print("Paramètres de session envoyée à " + id + "\n");
|
System.out.print("Paramètres de session envoyée à " + gn.idFromNom(name) + "\n");
|
||||||
|
|
||||||
//Lancement de la fenêtre de session
|
//Lancement de la fenêtre de session
|
||||||
EventQueue.invokeLater(new Runnable() {
|
EventQueue.invokeLater(new Runnable() {
|
||||||
|
@ -74,14 +74,15 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
|
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 " + this.id + "\n");
|
System.out.print("Données reçues sur le serveur de " + gn.getId() + "\n");
|
||||||
TCPServerThread client = new TCPServerThread(ssocket,false);
|
TCPServerThread client = new TCPServerThread(ssocket,false);
|
||||||
long idClient = -1;
|
String idClient = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
idClient = Long.parseLong(client.receive());
|
idClient = client.receive();
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
client.stop();
|
client.stop();
|
||||||
|
@ -90,18 +91,18 @@ 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>0 && i<this.sessions.size() && this.sessions.get(i).getIdDestination() != idClient) {
|
while (idClient != null && i<this.sessions.size() && this.sessions.get(i).getIdDestination() != idClient) {
|
||||||
i+=1;
|
i+=1;
|
||||||
}
|
}
|
||||||
if (idClient == -1);
|
if (idClient == null);
|
||||||
else if (i >= this.sessions.size()) {
|
else if (i >= this.sessions.size()) {
|
||||||
//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 " + this.id + "\n");
|
System.out.print("Nouvelle session sur le serveur de " + gn.getId() + "\n");
|
||||||
TCPClient clientEnvoi = new TCPClient(client.getAdresseCible(), PORT_REQUETE_NOUVELLE_SESSION + (int) idClient);
|
TCPClient clientEnvoi = new TCPClient(client.getAdresseCible(), PORT_REQUETE_NOUVELLE_SESSION + Integer.parseInt(idClient));
|
||||||
sessionClavardage session = new sessionClavardage(this.id, idClient, clientEnvoi, client);
|
sessionClavardage session = new sessionClavardage(gn.getId(), idClient, clientEnvoi, client);
|
||||||
this.sessions.add(session);
|
this.sessions.add(session);
|
||||||
clientEnvoi.send(Long.toString(id)+"\n");
|
clientEnvoi.send(gn.getId()+"\n");
|
||||||
System.out.print("Fin de la configuration de " + this.id + "\n");
|
System.out.print("Fin de la configuration de " + gn.getId() + "\n");
|
||||||
|
|
||||||
//Lancement de la fenêtre de session
|
//Lancement de la fenêtre de session
|
||||||
EventQueue.invokeLater(new Runnable() {
|
EventQueue.invokeLater(new Runnable() {
|
||||||
|
@ -116,15 +117,15 @@ public class gestionnaireClavardage implements Runnable{
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (this.sessions.get(i).getClientReception() == null) {
|
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
|
//il existe une session entre les deux utilisateurs, mais la phase de configuration n'est pas terminée
|
||||||
this.sessions.get(i).setClientReception(client);
|
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 {
|
else {
|
||||||
//Il existe déjà une connexion établie entre les deux machines
|
//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();
|
client.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,19 +2,19 @@ package clavardage;
|
||||||
import reseau.*;
|
import reseau.*;
|
||||||
|
|
||||||
public class sessionClavardage {
|
public class sessionClavardage {
|
||||||
private long idSource = 0;
|
private String idSource = null;
|
||||||
private long idDestination = 0;
|
private String idDestination = null;
|
||||||
private TCPClient clientEmission = null;
|
private TCPClient clientEmission = null;
|
||||||
private TCPClient clientReception = 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.idSource = idSource;
|
||||||
this.idDestination = idDestination;
|
this.idDestination = idDestination;
|
||||||
this.clientEmission = clientEmission;
|
this.clientEmission = clientEmission;
|
||||||
this.clientReception = clientReception;
|
this.clientReception = clientReception;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sessionClavardage(long idSource, long 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;
|
||||||
|
@ -35,11 +35,11 @@ public class sessionClavardage {
|
||||||
+ ", et " + this.idDestination + " à l'adresse " + this.clientEmission.getAdresseCible() + "\n";
|
+ ", et " + this.idDestination + " à l'adresse " + this.clientEmission.getAdresseCible() + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getIdSource() {
|
public String getIdSource() {
|
||||||
return this.idSource;
|
return this.idSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getIdDestination() {
|
public String getIdDestination() {
|
||||||
return this.idDestination;
|
return this.idDestination;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package clavardage;
|
||||||
import java.awt.EventQueue;
|
import java.awt.EventQueue;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import nom.GestionnaireNom;
|
||||||
import ui.DiscussionUI;
|
import ui.DiscussionUI;
|
||||||
|
|
||||||
public class test {
|
public class test {
|
||||||
|
@ -46,9 +47,12 @@ public class test {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
GestionnaireNom gn = GestionnaireNom.instance();
|
||||||
gestionnaireClavardage gc = gestionnaireClavardage.instance(11, 5, "localhost");
|
gn.setId("11");
|
||||||
gc.createSession(10);
|
gn.setIp("localhost");
|
||||||
|
gn.setNom("User2");
|
||||||
|
gestionnaireClavardage gc = gestionnaireClavardage.instance();
|
||||||
|
gc.createSession("User1");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
47
Projet_POO/src/liste/UdpUnicastClient2.java
Normal file
47
Projet_POO/src/liste/UdpUnicastClient2.java
Normal file
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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) {
|
||||||
|
System.out.print("port= "+port+" host= "+host+"\n");
|
||||||
System.out.print("Could not create socket\n");
|
System.out.print("Could not create socket\n");
|
||||||
}
|
}
|
||||||
this.adresseCible = socket.getInetAddress();
|
this.adresseCible = socket.getInetAddress();
|
||||||
|
|
Loading…
Reference in a new issue