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