Probleme chat graphique

cs_boboz2 Messages postés 11 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 11 juin 2008 - 11 juin 2008 à 10:11
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 - 11 juin 2008 à 16:03
Bonjour,
J'ai repris un code source de GillesWebmaster trouver sur ce site pour le modifier et ainsi realiser mon projet scolaire. Mais j'ai quelques erreurs, essentielement coter serveur.

La premiere est que je n'arrive pas à passer de la fenetre d'initialisation à la fenetre reel du serveur, alors que seul la fenetre reel du serveur fonctionne.

La deuxieme est que je n'arrive pas a afficher les clients connecte dans un text area a la suite d'un clic sur le bouton Client dans la fenetre serveur.

voici mon code de la fenetre d'initialisation :

import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ChatServeur
{
 JFrame cadre;
 JTextField port;



 public static void main(String[] args)
 {
  ChatServeur serveur = new ChatServeur();
  serveur.go(); 
 }



 public void go()
 {
  cadre= new JFrame("Chat serveur Istase (Fenetre identification)");



  JPanel infopanneau= new JPanel();
  JLabel texteinfo= new JLabel("Veuillez entrez les infos...");
  infopanneau.add(texteinfo);
  
  JPanel portpanneau= new JPanel();
  JLabel porttexte= new JLabel("Port: ");
  port= new JTextField(20);
  port.setText("5000");
  portpanneau.add(porttexte);
  portpanneau.add(port);
  
  JPanel boutonpanneau= new JPanel();
  JButton boutonEnvoi = new JButton("Envoyer...");
  boutonEnvoi.addActionListener(new EcouteBoutonEnvoi());
  boutonpanneau.add(boutonEnvoi);
  
  JPanel panneau= new JPanel();
  panneau.add(infopanneau);
  panneau.add(portpanneau);
  panneau.add(boutonpanneau);
  panneau.setLayout(new BoxLayout(panneau, BoxLayout.Y_AXIS));
  
  cadre.getContentPane().add(BorderLayout.CENTER, panneau);
  cadre.setSize(300,350);
  cadre.setVisible(true);
  cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
 public class EcouteBoutonEnvoi implements ActionListener
 {
  public void actionPerformed(ActionEvent ev)
  {
   try
   {
    cadre.setVisible(false);
    ChatServer serveurfinal= new ChatServer(port.getText());
    serveurfinal.ihminstall();
    serveurfinal.go();
    System.out.println("fini pour serveur");
   }
   catch(Exception e)
   {
    e.printStackTrace();
   }
  }
 }
}

et voici mon code de la fenetre reel du serveur :

import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ChatServer
{
 int portfinal=5000;
 JTextArea boiteinfo;
 JTextArea boiteclient;
 ArrayList clientOutputStreams;





 // Chat avec port en parametre
 public ChatServer(String port)
 {
  portfinal=Integer.parseInt(port);
 }
 
 // chat sans parametre
 public ChatServer()
 {
 }
 
 //Main
 public static void main(String[] args)
 {
  ChatServer Chatserveur= new ChatServer();
  System.out.println("fini pour server");
  Chatserveur.ihminstall();
  System.out.println("fini pour ihm");
  Chatserveur.go();
 }
 
 //IHM
 public void ihminstall()
 {
  JFrame cadre= new JFrame("Chat serveur Istase (Fenetre conversation)");
  
  JPanel infopanneau= new JPanel();
  JLabel encourstexte= new JLabel("Status actuel: ");
  infopanneau.add(encourstexte);
  boiteinfo = new JTextArea(15,30);
  boiteinfo.setLineWrap(true);
  boiteinfo.setWrapStyleWord(true);
  boiteinfo.setEditable(false);
  infopanneau.add(boiteinfo);
  
  JPanel clientpanneau = new JPanel();
  JLabel clientexte = new JLabel("Client Connecté: ");
  clientpanneau.add(clientexte);
  boiteclient = new JTextArea(15,30);
  boiteclient.setLineWrap(true);
  boiteclient.setWrapStyleWord(true);
  boiteclient.setEditable(false);
  clientpanneau.add(boiteclient);
  
  
  JButton fermerfenetre= new JButton("Fermer la fenêtre");
  fermerfenetre.addActionListener(new EcouteBoutonEnvoi());
  JPanel boutonpanneau= new JPanel();
  boutonpanneau.add(fermerfenetre);
  
  JButton client= new JButton("client");
  client.addActionListener(new EcouteClient());
  JPanel boutonclient= new JPanel();
  boutonclient.add(client);
  
  JPanel panneau= new JPanel();
  panneau.add(infopanneau);
  panneau.add(clientpanneau);
  panneau.add(boutonclient);
  panneau.add(boutonpanneau);
  panneau.setLayout(new BoxLayout(panneau, BoxLayout.Y_AXIS));
  
  cadre.getContentPane().add(BorderLayout.CENTER, panneau);
  cadre.setSize(400,500);//(l,h)
  cadre.setVisible(true);
  cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
 


 
 //
 public void go()
 {
  clientOutputStreams = new ArrayList();
  try
  {
   ServerSocket serverSock = new ServerSocket(portfinal);
   while(true)
   {
    Socket socketClient=serverSock.accept();
    PrintWriter ecriture = new PrintWriter(socketClient.getOutputStream());
    clientOutputStreams.add(ecriture);
    Thread t = new Thread(new GestionClient(socketClient));
    t.start();


    //boiteinfo.setText(boiteinfo.getText()+"\nConnection établie sur le port "+portfinal);
   }
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }
 
 
 
 //Gestion Client
 
 public class GestionClient implements Runnable
 {
  BufferedReader lecture;
  Socket sock;
  
  public GestionClient(Socket socketClient)
  {
   try
   {
    sock=socketClient;
    InputStreamReader isr = new InputStreamReader(sock.getInputStream());
    lecture= new BufferedReader(isr);
   }
   catch(Exception e)
   {
    e.printStackTrace();
   }
  }
  
  public void run()
  {
   String message;
   try
   {
    while((message=lecture.readLine()) !=null)
    {
     boiteinfo.setText(boiteinfo.getText()+"\n"+message);
     afficherATous(message);
    }
   }
   catch(Exception e)
   {
    e.printStackTrace();
   }
  }
 }
 
 
 
 public void afficherATous(String message)
 {
  Iterator it=clientOutputStreams.iterator();
  while(it.hasNext())
  {
   try
   {
    PrintWriter ecriture=(PrintWriter) it.next();
    ecriture.println(message);
    ecriture.flush();
   }
   catch(Exception e)
   {
    e.printStackTrace();
   }
  }
 }
 
 //Boutton fermer fenetre
 public class EcouteBoutonEnvoi implements ActionListener
 {
  public void actionPerformed(ActionEvent ev)
  {
   System.exit(0);
  }
 }
 //Boutton fermer fenetre
 public class EcouteClient implements ActionListener
 {
  public void actionPerformed(ActionEvent ev)
  {


   for (int i=0; i<=clientOutputStreams.size();i++)
   {
    boiteclient.setText(boiteclient.getText()+"\n"+clientOutputStreams.get(i));
   }
  }
 }
}

Merci à tous ceux qui regarderont.

Boboz2

4 réponses

GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
11 juin 2008 à 16:03
Bonjour ,
Humm...



étonnant...



Bonne Journée
GillesWebmaster



<hr size="2" />
0
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
11 juin 2008 à 16:03
Bonjour ,
Humm...



étonnant...



Bonne Journée
GillesWebmaster



<hr size="2" />
0
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
11 juin 2008 à 16:03
Bonjour ,
Humm...



étonnant...



Bonne Journée
GillesWebmaster



<hr size="2" />
0
GillesWebmaster Messages postés 496 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 29 juillet 2009 1
11 juin 2008 à 16:03
Bonjour ,
Humm...



étonnant...



Bonne Journée
GillesWebmaster



<hr size="2" />
0
Rejoignez-nous