Socket et java

Disponible uniquement sur Etudier
  • Pages : 6 (1343 mots )
  • Téléchargement(s) : 0
  • Publié le : 20 novembre 2011
Lire le document complet
Aperçu du document
|Université de Corse - Pasquale PAOLI

| |
| |Diplôme : Master Informatique |2009-2010 |
| |Systèmes Distribués |
| |Eléments de correction TD N°2 :|
| |Programmation Socket : C/S MultiClients |
| |Enseignant : Evelyne Vittori |

Partie 1 - Application MultiConseilSpécialisé
publicclass ControlClient extends Thread{
Socket cSock;//La socket du client traité
PrintWriter ecriture;
BufferedReader lecture;

// Constructeur
public ControlClient(Socket cSock) throws IOException{
this.cSock=cSock;
//Creer les flots d'entrée/sortie vers la socket client
ecriture=new PrintWriter(cSock.getOutputStream(),true);
//true pour flush automatiquelecture=new BufferedReader(new
InputStreamReader(cSock.getInputStream()));
// lancer le thread
start();
}

public void run(){
String conseil=null;
try {
ecriture.println("Serveur ConseilMulti en route");
ecriture.println("Veuillez vous identifier en tapant votre nom:");
String nom = lecture.readLine();
ecriture.println("Bienvenue " + nom);System.out.println(nom +" vient de se connecter");
ecriture.println("Voulez-vous un conseil Professionnel (taper pro) ou
personnel (taper per)");
while(true){
String demande = lecture.readLine();
if (demande.trim().equalsIgnoreCase("quit")) break;
//Déterminer le conseil à envoyer au client
if (demande.trim().equalsIgnoreCase("pro"))
//conseil professionnelconseil=ConseilMultiServeur.getConseilPro();
else if (demande.trim().equalsIgnoreCase("per"))
//conseil personnnel
conseil=ConseilMultiServeur.getConseilPer();
else conseil="aucun conseil disponible!!";
System.out.println("Conseil renvoyee à " + nom+ " : "
+conseil);
//Envoyer le conseil
ecriture.println(conseil);
//envoyer un saut de ligneecriture.println();
ecriture.println("Un autre Conseil? (taper pro, per ou quit
pour arreter)");
}
// Fermer les flots
ecriture.close();lecture.close();
// Fermer la socket
cSock.close();
System.out.println("client "+ nom + " déconnecté!");
} catch (IOException e) {
e.printStackTrace();
}
}
}

public class ConseilMultiServeur {
private staticfinal String[]listeConseilsPro= {"Vous avez besoin de vacances!", "Mettez vous vraiment au travail", "Vous devriez mieux traiter vos collaborateurs", "Arretez de faire croire aux autres que vous travaillez!!"};
private static final String[]listeConseilsPer= {"Mangez moins de pizzas", "Reposez vous davantage", "Allez chez le coiffeur", "Mangez plus de fruits"};

public static StringgetConseilPro(){
int numAleatoire=(int)
(Math.random()*listeConseilsPro.length);
return listeConseilsPro[numAleatoire];
}

public static String getConseilPer(){
int numAleatoire=(int)
(Math.random()*listeConseilsPer.length);
return listeConseilsPer[numAleatoire];
}

private void lancer(){
ServerSocketservSock=null;
try {
servSock=new ServerSocket(4545);
System.out.println("Serveur ConseilMulti démaré sur :
"+servSock);
while(true){
Socket cSock = servSock.accept();
//Blocage jusqu'à tentative de connexion d'un client
try{
//Création d'un thread de traitement du client
new ControlClient(cSock);
}catch(IOException e){
//si...
tracking img