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); 
		} 
	} 
    
}