Demande d'aide

erb211 Messages postés 8 Date d'inscription mardi 4 avril 2006 Statut Membre Dernière intervention 2 janvier 2007 - 2 janv. 2007 à 16:39
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 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{


    private JList listClient=new JList();
    private JScrollPane spListClient=new JScrollPane(listClient);
    private JTextArea text=new JTextArea();
    private JScrollPane spText=new JScrollPane(text);
    private JLabel barreEtat=new JLabel();
    private Box panneau=Box.createHorizontalBox();
    private JButton effacer=new JButton("Effacer");


    private JButton quitterButton=new JButton("Quitter");


    public GUIServeur() {
        super("Serveur");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container c=getContentPane();
        c.add(panneau,BorderLayout.NORTH);
        c.add(spText,BorderLayout.CENTER);
        c.add(spListClient,BorderLayout.EAST);
        c.add(barreEtat,BorderLayout.SOUTH);
        spListClient.setPreferredSize(new Dimension(100,150));


        panneau.add(effacer);


        panneau.add(quitterButton);


        effacer.addActionListener(this);


        quitterButton.addActionListener(this);


        barreEtat.setText(this.getAddress());
        text.setEditable(false);


        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


            }catch(Exception e){messageListener.ajouterText("ERREUR 3"+e.toString());}


            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


   
}

1 réponse

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
2 janv. 2007 à 17:31
"j'ai un probleme" 

et quel est ce probleme ?

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Rejoignez-nous