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