1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
package modele;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import java.util.Vector;
import params.Messages;
import vue.InterfaceServeur;
import vue.MessageErreur;
/**
* Cette classe est utilisee du cote serveur pour ecouter les connexions de clients
*/
public class Serveur extends Thread {
private InterfaceServeur interf;
private ServerSocket socketEcoute;
private Vector connectes;
/**
* Construit un nouveau Serveur ecoutant sur le port 'port',
* en indiquant l'interfaceServeur correspondante
* @param port Port d'ecoute du serveur
* @param i Interface serveur
*/
public Serveur(int port, InterfaceServeur i) {
// Lien vers l'interface
interf = i;
// Initialisation du vecteur des connectes
connectes = new Vector();
// Creation d'une socket de connexion serveur
String msg;
try{
demarrer(port);
msg = Messages.get("Serveur.0");
msg = msg.replaceFirst("%s", ""+port);
interf.addListing(1, msg);
}
catch(IOException e){
msg = Messages.get("Serveur.1");
msg = msg.replaceFirst("%s", ""+port);
interf.addListing(1, msg);
MessageErreur.show(Messages.get("err.2")+e, Messages.get("err.1"));
}
// Boucle d'attente de nouveaux clients
this.start();
}
// METHODES
/**
* Demarre le serveur (maj la serverSocket)
* @param port Port d'ecoute
* @throws IOException
*/
public void demarrer(int port) throws IOException{
socketEcoute = new ServerSocket(port);
}
/**
* Arrete le serveur
*/
public void arreter(){
try {
socketEcoute.close();
interf.addListing(1, Messages.get("Serveur.2"));
} catch (IOException e) {
MessageErreur.show(Messages.get("err.1"));
}
}
/**
* Boucle d'attente de nouveaux clients
*/
@SuppressWarnings("unchecked")
public void run(){
try{
interf.addListing(1, Messages.get("Serveur.3"));
while (socketEcoute.isClosed()==false) {
Socket socketClient = socketEcoute.accept();
// Un client se connecte
interf.addListing(1, Messages.get("Serveur.4"));
// Creation d'un nouveau processus pour le nouveau client
Thread c = new GestionClient(socketEcoute, socketClient, interf);
// Enregistrement dans le vecteur de connectes
Vector v = new Vector();
v.add(new Date()); // Date
v.add(socketClient); // Socket
v.add(c); // Processus
connectes.add(v);
}
}
catch(Exception e){
MessageErreur.show(Messages.get("Serveur.2"));
}
}
// ACCESSEURS
/**
* Definit l'interface serveur
* @param i Interface serveur
*/
public void setInterf(InterfaceServeur i){
this.interf = i;
}
/**
* Retourne le vecteur des connectes
* @return Vecteur des connectes
*/
public Vector getConnectes(){
return this.connectes;
}
/**
* Retourne la socket d'ecoute
* @return Socket d'ecoute
*/
public ServerSocket getSocketEcoute(){
return this.socketEcoute;
}
} |
Partager