www.pudn.com > CHAT-SERVEUR-CLIENT-APPLET.zip > Serveur.java


/* 
* Cette classe, avec ServeurDialogue, est le serveur de chat. Cette classe est le point d'entrée du serveur : 
* quand un client cherche à se connecter c'est cette classe qui accepte la connexion, puis qui crée une  
* instance de ServeurDialogue pour chaque client, à qui elle transferre cette connexion. 
* Cette classe Serveur possède également une fonction "envoyer", que les instances de ServeurDialogue appelent 
* quand elles veulent envoyer un message à tous les clients. 
*/ 
 
import java.net.ServerSocket; 
import java.util.ArrayList; 
 
public class Serveur { 
	static int port; 
	private static ArrayList clients; 
	private static ServerSocket serveur; 
 
	public static void main(String args[]) { 
		//Ce serveur prend un no de port en argument. On commence par vérifier l'argument 
		if(args.length != 1) { 
			System.out.println("le Serveur prend un et un seul argument : le no de port d'ecoute (qui doit etre compris entre 1024 et 65535)"); 
			System.exit(1); 
		} 
		try { 
			port = Integer.parseInt(args[0]); 
		} catch(Exception e) { 
			System.out.println("erreur : l'argument passe n'est pas un nombre entier"); 
			System.exit(1); 
		} 
		if(port < 1024 || port > 65535) { 
			System.out.println("erreur : le no de port doit etre compris entre 1024 et 65535"); 
			System.exit(1); 
		} 
		 
		//création de la socket d'écoute 
		try { 
			serveur = new ServerSocket(port); 
		} catch (Exception e) { 
			System.out.println("erreur a la creation de la socket d'ecoute : "+e.getMessage()); 
			System.exit(1); 
		} 
		System.out.println("Serveur demarre"); 
 
		//écoute des demandes de connexion des clients 
		clients = new ArrayList(); 
		try{ 
			for (;;){ 
				clients.add(new ServeurDialogue(serveur.accept())); // création d'une instance de ServeurDialogue pour chaque client 
				System.out.println("Client connecte"); 
			} 
		} catch (Exception e) { 
			System.out.println("erreur lors de la connexion d'un client : "+e.getMessage()); 
			System.exit(1); 
		} 
	} 
 
	public static void envoyer(String texte){//cette fonction envoie un message à tous les clients 
		for(int i = 0; i < clients.size(); i++) 
		{ 
			((ServeurDialogue)clients.get(i)).envoyer(texte); 
		} 
	} 
 
	public static void retirerClient(ServeurDialogue serveurDialogue){ 
		for(int i = 0; i < clients.size(); i++) 
		{ 
			if((ServeurDialogue)clients.get(i) == serveurDialogue) 
			{ 
				clients.remove(i); 
				break; 
			} 
		} 
	} 
 
}