erb211
Messages postés8Date d'inscriptionmardi 4 avril 2006StatutMembreDernière intervention 2 janvier 2007
-
2 janv. 2007 à 16:39
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 2010
-
2 janv. 2007 à 17:31
j'ai un probleme avec ce code veuillez m'aider svp:(au niveau de l'appelle qund je clique sur le bouton)
***********************************************************************
/******************/
portion du code classe de l'interface
/*******************/
jMenu_comp_decomp.setMnemonic('M');
jMenu_comp_decomp.setText("Lancer client");
jMenu_comp_decomp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
GUIServeur Chatserver= new GUIServeur();
Serveur serveur1 = new Serveur(gui);
}
/******************************/
code classe GUIServeur
/*******************************/
public class GUIServeur extends JFrame implements ActionListener,Constantes,MessageListener{
setSize(400,400);
setVisible(true);
}
public void ajouterText(String message){
text.append("\n"+message);
}
public void setClient(Vector lesClients){
listClient.setListData(lesClients);
}
public void actionPerformed(ActionEvent e){
Object src=e.getSource();
if(src==effacer)
text.setText("");
if(src==quitterButton)
quitter();
}
private void rendreInvisible(){
this.setVisible(false);
}
private void quitter(){
System.exit(0);
}
private String getAddress(){
String address="";
try{
String hote=InetAddress.getLocalHost().getHostName();
String ip=InetAddress.getLocalHost().getHostAddress();
address= " Nom De Hote: "+hote+", IP De Hote: "+ip;
}catch(UnknownHostException e){address="Erreur :"+e.toString();}
return address;
}
}
/******************************/
code classe Serveur
/*******************************/
public class Serveur implements Constantes {
private ServerSocket serveur;
private Hashtable group=new Hashtable();
private MessageListener messageListener;
public Serveur(MessageListener listener) {
this.messageListener=listener;
this.executer();
}
public void executer(){
try{
serveur=new ServerSocket(PORT);
messageListener.ajouterText("\nLe serveur est lance sur le port "+PORT);
while(true){
Socket client=serveur.accept();
Personne personne=new Personne(client);
personne.start();
}
}catch(Exception e){messageListener.ajouterText("\nERREUR 1:"+e.toString());}
}
//class Personne
private class Personne extends Thread{
private Socket socket;
private ObjectOutputStream out;
private ObjectInputStream in;
private String userID=null;
Personne(Socket socket){
try{
this.socket=socket;
out=new ObjectOutputStream(socket.getOutputStream());
out.flush();
in=new ObjectInputStream(socket.getInputStream());
messageListener.ajouterText("Connexion de "+socket.getInetAddress());
}catch(Exception e){messageListener.ajouterText("ERREUR 2"+e.toString());}
}
private void setUserID(String nom)throws Exception{
String ancienNom=userID;
if(!group.containsKey(nom)){
userID=nom;
new ThreadEmetteur(out,new Message(SERVEUR,"",USERID_AGREE)).start();
messageListener.ajouterText("le userID :"+userID+" est accepte");
//pour le premiere inscri
if(ancienNom==null){
Enumeration lesSorties=group.elements();
while(lesSorties.hasMoreElements())
new ThreadEmetteur((ObjectOutputStream)lesSorties.nextElement(),new Message(SERVEUR,"","## Connexion de "+userID+" ##")).start();
group.put(userID,out);
mettreListClientAjour();
}else{// pour changer le nom d'utilisateur
group.remove(ancienNom);
group.put(userID,out);
mettreListClientAjour();
}
}
else{
new ThreadEmetteur(out,new Message(SERVEUR,"",USERID_EXISTE_DEJA)).start();
messageListener.ajouterText("le userID "+nom+" existe deja ");
}
}
private void mettreListClientAjour(){
Enumeration lesClients=group.keys();
Vector listClient=new Vector();
while(lesClients.hasMoreElements()){
listClient.add(lesClients.nextElement());
}
messageListener.setClient(listClient);
Enumeration diffusion=group.elements();
while(diffusion.hasMoreElements()){
new ThreadEmetteur((ObjectOutputStream)diffusion.nextElement(),listClient).start();
}
}
public void run(){
String message="";
try{
out.writeObject(CONNEXION_REUSSI);
out.flush();
boucle:
while(!message.equals(CHAINE_DECONNEXION)){
Object recoi=in.readObject();
Message mps=(Message)recoi;
if(mps.cible.equals(SERVEUR) && mps.corpsMessage.equals(CHAINE_DECONNEXION)){
out.writeObject(new Message(SERVEUR,"",CHAINE_DECONNEXION));
out.flush();
break boucle;
}
if(mps.cible.equals(USERID)){
setUserID(mps.corpsMessage);
continue;
}
if(mps.cible.equals(TOUT_LES_PERSONNES)){
Enumeration lesSorties=group.elements();
while(lesSorties.hasMoreElements()){
new ThreadEmetteur((ObjectOutputStream)lesSorties.nextElement(),new Message(userID,TOUT_LES_PERSONNES,mps.corpsMessage)).start();
}
continue boucle;
}//fin de condition
ObjectOutputStream outCible=(ObjectOutputStream)group.get(mps.cible);
new ThreadEmetteur(outCible,new Message(userID,mps.cible,mps.corpsMessage)).start();
}// fin de boucle
try{
this.fermerConnexion();
}catch(Exception e){messageListener.ajouterText("ERREUR 4: au fermeture de connexion de "+userID);}
messageListener.ajouterText("fin de thread Personne de "+userID);
}//fin methode run
private void fermerConnexion()throws Exception{
out.close();
in.close();
socket.close();
group.remove(userID);
// mettre a jour la list des client de tout les utilisateur
mettreListClientAjour();
// envoyer a tout les utilisateur la deconnexion
Enumeration lesSorties=group.elements();
while(lesSorties.hasMoreElements()){
new ThreadEmetteur((ObjectOutputStream)lesSorties.nextElement(),new Message(SERVEUR,TOUT_LES_PERSONNES,"## Deconnexion de "+userID+" ##")).start();
}
messageListener.ajouterText("Deconnexion de "+userID);
}//fin de fermerConnexion()
}//fin class Personne