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

Java Discussion :

getFrame problème pour dupliquer une frame


Sujet :

Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut getFrame problème pour dupliquer une frame
    Bonjour à tous
    voilà je vous explique mmon souci , je suis entrain de trvailler sur un gros projet de sécurite d'application ( je suis en stage ) je travaille sur un prottype assez simple une application client/serveur qui permet d'envoyer des chaines de caracteres d'un coté comme de l'autre
    je voudrais au sein de ma classe serveur qd je vais lancer le frame il me duplique la meme frame ( je ne veux pas créer un nouvel objet ) mais dupliquer le meme
    j'ai cru comprendre que getFrame() permet de récuperer la frame es ce que ça serait possible ou pas
    exemple le code que j'ai fait le probleme c'est au niveau du main

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    import javax.swing.*;
     
     import java.io.*;
     import java.net.*;
     import java.awt.event.*;
     import java.awt.*;
     
     
     public class Serveur extends JFrame{
     // les sockets:
     private java.net.ServerSocket serveur;
     private java.net.Socket connexion;
     //les flux d'entrées/sorties
     private java.io.ObjectInputStream entree ;
     private java.io.ObjectOutputStream sortie;
     // les composant de l'IHM
     private JTextField champEntree;
     private JTextArea zoneAffichage;
     
     
     private int compteur = 1;
     
     /** Creates a new instance of Main */
     public Serveur() {
     super("Frame");
     Container c = getContentPane();
     
     // les composants !!!!
     //*****************************************************
     this.champEntree = new JTextField("");
     this.champEntree.setEnabled(false);
     this.champEntree.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e){
     //envoyer au client le message
     System.err.println("envoyer:");
     envoyerDonnees(e.getActionCommand());
     }
     });
     
     //*******************************************************
     //******************************************************
     this.zoneAffichage = new JTextArea();
     //*****************************************************
     
     c.add(this.champEntree, BorderLayout.SOUTH);
     c.add(new JScrollPane(this.zoneAffichage), BorderLayout.CENTER);
     
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setSize(500,500);
     setVisible(true);
     }
     
     //*****************************************************************************
     public void envoyerDonnees(String message){
     try{
     sortie.writeObject("SERVEUR>>> "+ message);
     sortie.flush();
     this.zoneAffichage.append("\nSERVEUR>>> "+message);
     this.champEntree.setText("");
     }
     catch(IOException io){
     zoneAffichage.append("\nErreur à l'écriture d'un object");
     }
     }
     //*****************************************************************************
     public void lancerServeur(){
     try{
     System.out.println("	Bienvenue   ");
     //ETAPE 1:preparation d'un socket serveur
     serveur = new ServerSocket(5001,100);
     
     while(true){
     //ETAPE 2: attendre une connexion
     attendreUneConnexion();
     
     //ETAPE 3: obtenir les flux...
     obtenirLesFlux();
     
     //ETAPE 4:Traiter la connexion
     traiterConnexion();
     
     //ETAPE 5: fermer la connexion
     fermerConnexion();
     }
     }
     catch(EOFException eof){
     JOptionPane.showMessageDialog(this,eof.getMessage()
     +"\n Le Client  a interrompu la connexion");
     
     }
     catch(IOException io){
     // traite les eventuelles problémes d'E/S
     io.printStackTrace();
     }
     }
     public void attendreUneConnexion()throws IOException{
     this.zoneAffichage.setText("En attente de connexion......\n");
     //Faire en sorte que lengthserveur accepte une connexion.
     this.connexion = serveur.accept();
     
     this.zoneAffichage.append("connexion " + compteur +
     "recue de : "+ connexion.getInetAddress().getHostName());
     }
     
     public void obtenirLesFlux()throws IOException{
     // Avoir la sortie
     sortie = new ObjectOutputStream(connexion.getOutputStream());
     
     // vidanger lengthtampon se sorie pour envoyer les information
     //d'en-tête.
     sortie.flush();
     
     //Avoir la sortie
     entree = new ObjectInputStream(connexion.getInputStream());
     
     this.zoneAffichage.append("\n J'ai reçu les flux");
     }
     
     public void traiterConnexion()throws IOException{
     //envoyer message de la connexion reussie
     String message = "SERVEUR>>> Connection";
     sortie.writeObject(message);
     sortie.flush();
     
     //Activer le champ d'Entree
     champEntree.setEnabled(true);
     
     //traitment des informations!!
     do{
     try{
     message = (String)entree.readObject();
     this.zoneAffichage.append("\n"+message);
     //place le message sur la zone de texte
     this.zoneAffichage.setCaretPosition(this.zoneAffichage.getText().length());
     }
     catch(ClassNotFoundException e){
     this.zoneAffichage.append(e.getMessage()+"\nl'object reçu de type inconnu");
     }
     }while (!message.equals("CLIENT>>> terminer"));
     }
     
     public void fermerConnexion()throws IOException{
     this.zoneAffichage.append("\nL'utilisateur a fermé la connexion.");
     this.champEntree.setEnabled(false);
     envoyerDonnees("terminer");
     sortie.close();
     entree.close();
     connexion.close();
     
     }
     /**
     * @param args the command line arguments
     */
     public static void main(String[] args) {
     Serveur appli = new Serveur();
     Serveur applic = new Serveur();
     applic.setVisible(true);
     
     //appli.lancerServeur();
     }
     
     
     }.

  2. #2
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Citation Envoyé par nabilous Voir le message
    je voudrais au sein de ma classe serveur qd je vais lancer le frame il me duplique la meme frame ( je ne veux pas créer un nouvel objet ) mais dupliquer le meme.
    Je ne comprends pas trop, tu ne veux pas créer un nouvel objet mais tu veux dupliquer la frame. Le principe de dupliquer c'est de créer un nouvel objet identique au précédent, non?

    Tu ne pourras ouvrir qu'une seule socket à la fois sur le même port.

    Tu devrais séparer ton code en au moins 3 classes, une gérant la communication, une pour l'ihm et une contenant la méthode main qui lance les 2 autres.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    en fait , j'utilise deux machines virtuelles et je veux que qd je lance mon main et créer la frame dans une machine avec ma configuration réseau je puisse créer le meme environement de l'autre coté sur l'autre machine virtuelle ( je veux commencer dans un premier temps en localhost pour vérifier mon travail ) voilà

  4. #4
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Si tu lances deux fois la même application, dans deux JVM différentes, elles seront identiques. Où est le problème?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    le problème sera au niveau des comparaisons des résultats plus tard lors de la synchronisation c'est pas les mêmes objets donc c'est ça qui me gêne.

  6. #6
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Comparer les résultats de quoi? quelle synchronisation?

    Pourrais-tu expliquer la finalité du problème, c'est la 1ère fois que tu parles de synchronisation et de comparer des résultats.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/04/2009, 10h26
  2. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  3. [MSSQL] Problème pour sélectionner une seule occurence
    Par Tinfolley dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/07/2004, 09h02
  4. [SWING][THREAD]Méthodes pour afficher une Frame
    Par pompidouwa dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 05/05/2004, 10h35
  5. Réponses: 3
    Dernier message: 29/08/2003, 10h57

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