class ServeurSimple
{
public static void main( String [] args )
{
int port = 1973;
ServerSocket SocketServeur = null;
Socket socket = null;
int client = 0;
if( args.length == 1 )
port = Integer.parseInt( args [ 0 ] );
}
catch( IOException e )
{
System.err.println( "Erreur : " + e );
}
finally
{
try
{
socket.close();
}
catch( IOException e ) {}
}
}
}
try
{
if( args.length>=1 )
hote = InetAddress.getByName( args[0] );
else
hote = InetAddress.getLocalHost();
if( args.length==2 )
port = Integer.parseInt( args[1] ) ;
}
catch(UnknownHostException e) {}
...
http://nadir.is.online.fr/cours/java/tp_java_06.html 1/5
06/03/2018 JAVA TP
client++;
void FaireUnePause()
{
try
{
System.out.println("pause d'une seconde");
Thread.currentThread().sleep(1000);
}
catch(InterruptedException e) {}
}
CLIENT : Se baser sur le client de l’exercice 1 pour créer la classe « ClientExo2 » pour que les clients restent connectés au serveur pour 10 echanges d’affilé, en affichant à
l‘écran les phrases du serveur et en répondant à chaque fois. Le programme principal de chaque client sera :
1. recevoir le message du serveur
2. incrémenter la variable « compteur » (le nombre d’échanges)
3. répondre par : "Je suis le client "+hote+" et j'ai fait "+compteur+" appels" (« hote » est défini dans l’exercice 1)
4. faire une pause de 2 secondes
5. boucler à l’étape 1 dix fois
6. Terminer par un envoie d’une phrase vide ""
Tester le serveur en lancant plusieurs clients simultanément (au moins 2).
Indications :
Ø Pour écrire dans un TextArea : methode append(String)
Ø Pour lire dans un TextField : méthode String getText()
http://nadir.is.online.fr/cours/java/tp_java_06.html 2/5
06/03/2018 JAVA TP
import java.util.*;
pack();
show();
Input.requestFocus();
Exercice 4: un
IRC
Le pricncipe d’un IRC est qu’un ensemble de clients, tous connectés au même serveur, puisse dialoguer. c'est à dire que chaque client voit tout ce que disent les autres clients, et
peut lui-même parler. Pour distinguer les clients les uns des autres, chacun porte un pseudonyme, qui est repris en entete de chaque message. Exemple :
PSEUDONYME> ceci est un message
Le role du serveur IRC est donc de recevoir en simultané les messages de tous les clients et de les renvoyer vers tous les autres clients. Convention : Chaque client doit fournir à la
connexion au serveur un Pseudonyme ( « NickName » dans le monde IRC).
Le serveur doit :
Ø Attendre des connexions
Ø Créer un nouveau Thread pour chque nouneau client
Ø Créer et maintenir une liste des clients connecté (voir ci-dessous)
Ø Indiquer à tous les clients les nouveaux connectés et ceux qui se sont déconnectés
Le thread serveur (chargé d’un seul client) doit :
Ø Envoyer un message de bienvenue
Ø Envoyer la liste de tout les connectés
Ø Faire passer chaque message provenant du client au serveur, qui à son tour l’envoi à tous les clients connectés
http://nadir.is.online.fr/cours/java/tp_java_06.html 3/5
06/03/2018 JAVA TP
Pour créer la liste des utilisateurs, on va utiliser la classe java.util.Vector. Elle possède 4 méthodes utiles :
Ø addElement(Object) : Ajouter un objet
Ø removeElement(Object) : Supprimer un objet
Ø int size() : nombre d ‘éléments
Ø Object elementAt(int position) : Retourner l’objet à la postion donnée
ci-dessous un extrait du code du serveur :
class ServeurIRC
{
Vector V;
if( args.length == 1 )
port = Integer.parseInt( args [ 0 ] );
new ServeurIRC(port);
}
try
{
ServerSocket server=new ServerSocket(port);
while (true)
...
}
catch (Exception e)
{
System.err.println(e);
}
}
ServeurIRC serveur;
String nom="???";
Modifier également le client GUI de l’exercice 3 pour que celui-ci commence par envoyer au serveur un pseudonyme, qu’il recevra en parametre de la ligne de commande : la
classe se nommera « ClientIRC ».
Exercice 4
Ø Ajouter du code sur le serveur pour vérifier que les nouveaux arrivants n’ont pas un pseudonyme déjà utilisé
Ø Ajouter un bouton quitter sur la fenetre client et ajouter le code pour le gérer.
Ø Ajouter des commandes :
· List
· Clear
· Exit ou Quit ou Leave ou Bye
· Msg : enoyer un message privé
http://nadir.is.online.fr/cours/java/tp_java_06.html 4/5
06/03/2018 JAVA TP
http://nadir.is.online.fr/cours/java/tp_java_06.html 5/5