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