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

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

application clients serveur


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Nouveau Candidat au Club
    application clients serveur
    salut ,je suis débutante en java et je suis entrain d'implémenter une application clients serveur j'ai un petit problème je ne sais pas comment afficher le nom du client devant son message dans la console du serveur (par exemple : Client 1 : salut, mes amis). Aidez-moi s'il vous plaît

  2. #2
    Expert éminent sénior
    ben va déjà falloir que tu nous montre du code. On ne sait pas où tu stocke le nom du client, comment tu transfère le messages, comment tu l'affiche, ....
    A la base si tu veux afficher le nom du client devant le message, il faut stocker ce nom dans l'objet message que tu transfère entre ton client et ton serveur.
    David Delbecq Java developer chez HMS Industrial Networks AB.    LinkedIn | Google+

  3. #3
    Nouveau Candidat au Club
    merci pour votre réponse.premièrement j'ai utilisé 5 classes :serveur,thread serveur, client,thread client et fenêtre client etune méthode afficher dans la classe fenetreClient
    void afficher(String msg){

    jTextArea1.append(msg+"\n");

    } //(String msg = jTextField1.getText(); )

    voila le code (CLIENT)
    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
     
    package client;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
     
     
    public class Client {
        public static void main(String[] args) {
            try {
     
                FenetreC fen = new FenetreC();
                Socket soc = new Socket("127.0.0.1", 5000);
                //***************************************//
                OutputStreamWriter sortie = new OutputStreamWriter(soc.getOutputStream());
                BufferedReader entree = new BufferedReader(new InputStreamReader(soc.getInputStream()));
     
                //***************************************//
                //1-Envoi du nom du client 
     
     
                 fen.out = sortie;
                //***************************************//
     
                ThreadC thC = new ThreadC();
                thC.in = entree;
                thC.start();
     
                thC.zt=fen;
            } catch (Exception e) {
                //e.printStackTrace();
     
            }
        }
     
    }

    (SERVEUR)
    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
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package serveur;
     
    /**
     *
     * @author Hind
     */
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Vector;
     
     
     
    public class Serveur {
     
     
        public static void main(String[] args) {
            Vector<OutputStreamWriter> clients = new Vector<>();
             int  nbrclient = 1;
     
            try {
                ServerSocket serv = new ServerSocket(5000);
                while (true) {
                    Socket s = serv.accept();
                    System.out.println("Nouveau client connecté");
                    //***************************************//
                    OutputStreamWriter sortie = new OutputStreamWriter(s.getOutputStream());
                    BufferedReader entree = new BufferedReader(new InputStreamReader(s.getInputStream()));
                    //***************************************//
                    //2- Reception du nom du client
    	        //System.out.println(+nbrclient+":" +msg);
    	        //nbrclient++;   
     
     
     
                    //3- Diffusion des noms déjà connectés au nouveau client
                    //4- Envoyer le nom du nouveau client aux personnes connectées
                    clients.add(sortie);                
                    //***************************************//
                    ThreadS thS = new ThreadS();
                    thS.in = entree;
                    thS.clients = clients;
                    thS.start();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
     
        }
     
    }
     
            // TODO code application logic here

    (FENETRCLIENT)
    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
    package client;
     
    import java.io.OutputStreamWriter;
    import java.util.Vector;
    import javax.swing.table.DefaultTableModel;
     
     
    /**
     *
     * @author Hind
     */
    public class FenetreC extends javax.swing.JFrame {
         DefaultTableModel modele;
        OutputStreamWriter out;
     
        /**
         * Creates new form FenetreC
         */
        public FenetreC() {
            initComponents();
            modele=(DefaultTableModel)jTable1.getModel();
            setVisible(true);
     
        }
        void afficher(String msg){
     
            jTextArea1.append(msg+"\n"); 
     
        }     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
          try {
                String msg = jTextField1.getText();
                //Concatener avec "1"
                out.write(msg+"\n");
                out.flush();     
                afficher(msg);
                jTextField1.setText("");
     
            } catch (Exception e) {
                e.printStackTrace();
            } 
        }                        
    public static void main(String args[]) {
     
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new FenetreC().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JTextArea jTextArea1;
        private javax.swing.JTextField jTextField1;
       // End of variables declaration                   
    }

  4. #4
    Expert confirmé
    Plusieurs points à prendre en compte:

    -on ne mélange pas les différents IO entre eux, l'affichage et le réseaux doivent être des responsabilités distinctes dans des classes séparées, ceci pour faciliter l'évolution et les corrections. (http://www.oodesign.com/single-respo...principle.html)
    -serveur accept est bloquant, donc il faut gérer les connections avec des threads. (http://tutorials.jenkov.com/java-mul...ed-server.html)
    -une connection étant une session, tu peux mapper un socket avec un identifiant d'utilisateur pour solutionner ton problème. (https://bitbucket.org/yildiz-engine-...e-view-default)
    Play50HZ, le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page