IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Chat en Intranet


Sujet :

Interfaces Graphiques en Java

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 2
    Par défaut Chat en Intranet
    Bonjour,

    J'ai un exercices que je n'arrive pas à résoudre et j'aimerais bien que quelqu'un m'aide pour trouver une bonne solution. Et merci d'avance.

    Pour ce petit projet (Chat en Intranet). J'ai 4 classes :
    1- la classe Serveur
    2- la classe ServeurThread
    3- la classe Client
    4- la classe ClientApplet

    Et une petite page HTML : Discussion.HTML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    import java.io.*;
    import java.util.*;
    import java.net.*;
     
    public class Serveur {
        private ServerSocket ss;
        private Hashtable FluxClients = new Hashtable();
        public Serveur(int port){
            ecouter(port);
        }
        public void ecouter(int port){
            try{
            ss=new ServerSocket(port);
            System.out.println("On écoute sur" + ss);
                while(true)
                    {
                     Socket s=ss.accept();
                     System.out.println("Connexion de :" + s);
                     DataOutputStream dout= new DataOutputStream (s.getOutputStream());
                     FluxClients.put(s,dout);
                     //new ServerThread(this,s);      
                    }
            }catch(Exception ex){
            System.out.println("Erreur" + ex);
            }
        }
     
        Enumeration getFluxClients(){
            return FluxClients.elements();        
        }
     
        public void SendToAll(String msg){
            synchronized(FluxClients)
            {
            for(Enumeration e=getFluxClients();e.hasMoreElements();)
                {
                DataOutputStream dout=(DataOutputStream)e.nextElement();
                try {dout.writeUTF(msg);}
                catch(IOException ex)
                    {
                    System.out.println("Erreur de diffusion" + ex);}     
                    }
            }            
        }
     
        public void supprimer(Socket s){
            synchronized(FluxClients){
            System.out.println("Deconnexion de" + s);
            FluxClients.remove(s);
            try{
                s.close();
            }
            catch(IOException ex){
                System.out.println("Erreur" + ex);
            }
        }}
     
        public static void main(String []args){
           try{ 
            int port=Integer.parseInt(args[0]);
            new Serveur(port);}
           catch(Exception ex){
           System.out.println("Erreur" + ex);   
           }
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    import java.io.*;
    import java.net.*;
     
    public class ServeurThread extends Thread{
        private Serveur serveur;
        private Socket s;
     
        public ServeurThread(Serveur svr,Socket skt){
            serveur=svr;
            s=skt;
            start();
        }
     
        public void run(){
            try{
     
                System.out.println("aaaaaaaa");
                DataInputStream din=new DataInputStream(s.getInputStream());
                while(true)
                    {
     
     
                    String msg = din.readUTF();
                    System.out.println("Envoi de :" + msg);
                    serveur.SendToAll(msg);
                    }
               }
            catch(IOException ex)
            {
                System.out.println("Erreur réseau" + ex);
            }
            finally
            {
                serveur.supprimer(s);
            }
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
     
    public class Client extends Panel implements Runnable{
        private TextField tf = new TextField();
        private TextArea ta = new TextArea();
        private Socket s;
        DataOutputStream dout;
        DataInputStream din;
     
        public Client(String host,int port){
            setLayout(new BorderLayout());
            add("North",tf);
            add("Center",ta);
            tf.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent ev)
                {
                    //Traitermsg(tf.getText());
                    Traitermsg(ev.getActionCommand());
                }
            });
            try{
                s=new Socket(host,port);
                din=new DataInputStream(s.getInputStream());
                dout=new DataOutputStream(s.getOutputStream());
                new Thread(this).start();
               }
            catch(Exception ex){
                System.out.println("Erreur" + ex);
            }
        }
     
        public void Traitermsg(String msg){
            try{
                dout.writeUTF(msg);
                tf.setText("");
               }
            catch(IOException ex){
                System.out.println("Erreur" + ex);
            }
        }
     
        public void run(){
            try{
                while(true){
                    String msg = din.readUTF();
                    ta.append(msg + "\n"); 
     
                }
               }
            catch(IOException e){
            System.out.println("Erreur" + e);
            }
     
        }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import java.awt.*;
    import java.applet.*;
     
     
    public class ClientApplet extends Applet {
        public void init(){
            String host=getParameter("host");
            int port=Integer.parseInt(getParameter("port"));
            setLayout(new BorderLayout());
            //add(new Client(host,port));
            add(BorderLayout.CENTER,new Client(host,port));
        }
    }
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <html> 
      <head> 
        <title>Application de chat avec JAVA</title> 
      </head> 
      <body> 
        <applet code="ClientApplet.class" height="700" width="700"> 
          <param name="host" value=""> 
          <param name="port" value=""> 
        </applet> 
      </body> 
    </html>


    Dans ce projet je peux envoyer des messages en réseau local, et ça marche bien.

    Mais mon problème est que je doit ajouté un panel pour l'identification sans mot de passe et afficher tous les utilisateurs dans une liste et les messages comme ceci : login : message.

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    N'arrive tu pas à cree le jpanel pour l'identication d'un client et à l'afficher dans l'applet?
    Si c'est le cas, sache qu'on peut ajouter et retirer des composants placés dans un layout( methode add et remove). Alors tu peux ajouter le panel pour l'identification, ensuite le retiré pour afficher le service chat.

    J'ai eu faire un service chat un peu analogue au tien. Chez moi, je conserve les identifiants des clients dans un fichier xml sur le serveur. Et les messages suivent un protocol tres simple sous la forme :
    L'entete me donne le type de service que le client demande. par exemple demande de la liste des connectés-envoie d'un message à un client en particulier ...

Discussions similaires

  1. [Flash] Chat irc ?
    Par Skorps dans le forum Flash
    Réponses: 9
    Dernier message: 13/10/2008, 00h55
  2. Pb de connexion sécurisée pour sites Internet et Intranet
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2003, 16h16
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. [TP]Création d'un Chat en Pascal!
    Par Sub0 dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 12/06/2003, 19h58
  5. intranet
    Par porte dans le forum Développement
    Réponses: 8
    Dernier message: 05/06/2003, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo