www.pudn.com > CHAT-SERVEUR-CLIENT-APPLET.zip > ServeurDialogue.java
/*
* La classe Serveur crée 1 instance de cette classe par client qui se connecte. ServeurDialogue gère
* toutes les communications avec son client attitré. Juste après sa création, il se transforme en thread
* pour que les autres instances de ServeurDialogue puissent travailler en même temps.
*/
import java.net.Socket;
import java.net.ServerSocket;
import java.io.DataInputStream;
import java.io.PrintStream;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
class ServeurDialogue implements Runnable {
Socket client;
BufferedReader depuisClient;
PrintStream versClient;
int somme = 0;
String login;
public ServeurDialogue(Socket client) {
this.client = client;
try {
// creation des flux de/vers le client
depuisClient = new BufferedReader(new InputStreamReader(client.getInputStream()));
versClient = new PrintStream(client.getOutputStream());
} catch (IOException e) {
try { client.close(); } catch (IOException ee) {}
}
new Thread(this).start();//on transforme cette instance en thread => appel de la fonction run().
}
public void run() {
try {
String lue;
while ((lue = depuisClient.readLine()) != null) { //on se met à l'écoute des messages venant du client
traitementReception(lue); //dès qu'un message arrive on lance traitementReception
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
stop();
}
public void traitementReception(String recu){
if(recu.indexOf(":")>0)//si le message a un format correct
{
String entete = recu.substring(0,recu.indexOf(":"));
if(entete.equals("login")) {//si le message du client commence par "login"...
login = recu.substring(recu.indexOf(":")+1);
Serveur.envoyer("general:" + login + " est entré(e) sur le chat");
} else if(entete.equals("message")) { //si le message du client commence par "message"...
Serveur.envoyer("user:" + login + ":" + recu.substring(recu.indexOf(":")+1));
}
}
}
public void envoyer(String texte) {
versClient.println(texte);
}
public void stop() {
try {
Serveur.envoyer("general:" + login + " est parti du chat");
Serveur.retirerClient(this);
client.close();
} catch (IOException e) {
System.out.println("exception a la fermeture d'une connexion : "+e);
}
}
}