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();
 }
 
 
 }.