M'expliquer code-source du " socket serveur"

Fermé
shyndows Messages postés 5 Date d'inscription jeudi 17 septembre 2009 Statut Membre Dernière intervention 4 mai 2010 - 3 mai 2010 à 17:49
voici le code du " socket serveur":

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 compteur1 = 1;

private int compteur = 1;


/** Creates a new instance of Main */

public Serveur() {

super("Serveur");

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.NORTH);

c.add(new JScrollPane(this.zoneAffichage), BorderLayout.CENTER);


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(350,350);

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("bienvenu");

//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 lengthclient a interrompu la connexion");


}

catch(IOException io){

// trate 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 " + compteur1 +

"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 la zonne de texte sur le message

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

}


?

public static void main(String[] args) {


Serveur appli = new Serveur();

appli.lancerServeur();

}

}




















code du"socket client":

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.io.*;


import javax.swing.*;


?

public class Client extends JFrame{

// interface IHM

private Container c ;

private JTextArea affichage ;

private JTextField champEntree;

//*********************************


// connexion au serveur.$

private Socket client;

private String serveurDeChat;

private String message ;

//***********************************


//les flux.....................

private ObjectInputStream entree;

private ObjectOutputStream sortie;

//***************************************



/** Creates a new instance of Client */

public Client(String hote) {

super("Client");

this.serveurDeChat = hote;


//installation des composants graphique

// sur le conteneur......

c = getContentPane();

this.affichage = new JTextArea();

this.champEntree = new JTextField();

champEntree.setEnabled(false);

c.add(champEntree,BorderLayout.NORTH);

c.add(new JScrollPane(affichage),BorderLayout.CENTER);

//**************************************



//gestion des evenements

champEntree.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

envoyerDonner(e.getActionCommand());

}

});

//***********************************************


setSize(300,300);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}


public void lancerClient(){

try{

//Etape n:1;

seConnecterAuServeur();


//Etape n2;

obtenirFlux();


//Etape n3;

traiterConnexion();


//Etape n4;

fermerConnexion();

}

catch(EOFException eof){

// le serveur a fermé la connexion

JOptionPane.showMessageDialog(this,eof.getMessage()+"","ERREUR"

,JOptionPane.ERROR);

}

catch(IOException e){

//Traiter les problemes de communication avec lengthserveur

e.printStackTrace();

}

}

//*****************************************************************************

public void seConnecterAuServeur()throws IOException{

this.affichage.setText("Essai de Connexion...\n");

// créer lengthsocket pour mettre en place la connexion au serveur .

client = new Socket(InetAddress.getByName(this.serveurDeChat),5001);

this.affichage.append("Connecté à:" + client.getInetAddress().getHostName());


}

//*****************************************************************************

//*****************************************************************************

public void obtenirFlux()throws IOException{

this.sortie = new ObjectOutputStream( this.client.getOutputStream());

sortie.flush();

this.entree = new ObjectInputStream(this.client.getInputStream());

this.affichage.append("\nJ'ai eu les flux");

}

//*****************************************************************************

//*****************************************************************************

public void traiterConnexion()throws IOException{

this.champEntree.setEnabled(true);

do{

try{

message=(String)entree.readObject();

this.affichage.append("\n" +message);

this.affichage.setCaretPosition(this.affichage.getText().length());

}

catch(ClassNotFoundException e){

JOptionPane.showMessageDialog(this,e.getMessage());

}

}while(!message.equals("SERVEUR>>> TERMINER"));


}

//*****************************************************************************

//*****************************************************************************

public void fermerConnexion()throws IOException{

this.affichage.append("\nUtilisateur a fermé la connexion.");

this.champEntree.setEnabled(false);

sortie.close();

entree.close();

client.close();


}

//*****************************************************************************


public void envoyerDonner(String message){

try{

sortie.writeObject("CLIENT>>> " + message);

sortie.flush();

this.champEntree.setText("");

}

catch(IOException e){

JOptionPane.showMessageDialog(this,e.getMessage());

}

}

/**

* @param args the command line arguments

*/

public static void main(String[] args){

Client client = new Client("127.0.0.1");

client.lancerClient();

}


}

LA QUESTION:

bnj;je voulais realiser une connection entre 2 socket"cliente/serveuse" mais comme je me suis tres debutante en JAVA ,j'arrive pas a la faire

svp:je veux quelqu'un pour m' expliquer ces lignes de codes avec plus de details.merci d'avance