Socket Et Java
Recherche de Documents : Socket Et Java. Rechercher de 53 000+ Dissertation Gratuites et Mémoires"pro"))
//conseil professionnel
conseil=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 ligne
ecriture.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 static final 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 String getConseilPro(){
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(){
ServerSocket servSock=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 exception on ferme la socket
// sinon c'est le thread qui le fait
cSock.close();
} }
}
catch (IOException e) {
e.printStackTrace();
}
finally{
try {
servSock.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
ConseilMultiServeur serveur=new ConseilMultiServeur();
serveur.lancer();
}
}
Normalement, la classe Client n’étaient pas à refaire, vous pouviez utiliser la classe réalisée lors du TP1. Je place la classe ConseilMultiClient simplement pour information afin de vous donner la classe que j’ai utilisée pour tester mon serveur.
public class ConseilMultiClient {
public static final String HOST="127.0.0.1";
public static final int PORT=4545;
public void lancer() {
try{
Socket maSocket = new Socket("127.0.0.1",PORT);
//Créer les flots
//Flot d'écriture :un PrintWriter chainé au flot d'entrée de la socket
PrintWriter ecriture=new PrintWriter(maSocket.getOutputStream(),true);
//true assure le vidage automatique du buffer
//Flot de lecture :un InputStreamReader chainé au flot de sortie de la socket
InputStreamReader isr=new InputStreamReader(maSocket.getInputStream());
//un BufferedReader
BufferedReader lecture=new BufferedReader(isr);
//Console locale
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
//Lire une ligne
System.out.println(lecture.readLine());
System.out.println(lecture.readLine());
ecriture.println(console.readLine());//saisie du nom sur la console et envoi sur la socket
System.out.println(lecture.readLine());
System.out.println(lecture.readLine());
while (true){
System.out.print("Saisissez votre choix :");
String choix=console.readLine();
//ecrire un requête
ecriture.println(choix);
//arrêt si quit
if (choix.trim().equalsIgnoreCase("quit")) break;
//Lire une ligne
String conseil=lecture.readLine();
//affichage en local sur la console
System.out.println("Le conseil du jour : " + conseil);
System.out.println(lecture.readLine());
System.out.println(lecture.readLine());
}
//fermeture du flot de lecture
lecture.close();
// Fermeture du flot d'ecriture
ecriture.close();
//Fermer la socket
maSocket.close();
}
catch(IOException ioe){
System.err.println("Erreur d’échange de donnees");
ioe.printStackTrace();
}
finally{
//Libérer les ressources
System.out.println("Arret connexion");
//Fermer les flots
//bf.close();
//Fermer la socket
//maSocket.close();
}
}
public static void main(String[] args) {
ConseilMultiClient client=new ConseilMultiClient();
client.lancer();
}
}
Partie 2 - Application
...