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

Discussion :

application clients serveur


Sujet :

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

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    décembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2016
    Messages : 2
    Points : 0
    Points
    0
    Par défaut 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
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 461
    Points : 48 733
    Points
    48 733
    Par défaut
    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.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    décembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : décembre 2016
    Messages : 2
    Points : 0
    Points
    0
    Par défaut
    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é Avatar de yildiz-online
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    octobre 2011
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : octobre 2011
    Messages : 1 228
    Points : 4 120
    Points
    4 120
    Par défaut
    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)
    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

Discussions similaires

  1. [Free Pascal] Application client/serveur en Pascal
    Par zouzou_zaza dans le forum Free Pascal
    Réponses: 15
    Dernier message: 02/09/2004, 17h57
  2. [Débutant] Application client serveur
    Par dk dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 7
    Dernier message: 30/06/2004, 11h38
  3. Choix port pour application client-serveur
    Par Tiaps dans le forum Développement
    Réponses: 7
    Dernier message: 15/03/2004, 09h49
  4. Réponses: 2
    Dernier message: 01/10/2002, 12h25
  5. Langage le mieux adapté pour application client serveur ?
    Par guenus dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 17/06/2002, 15h46

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