je me souviens avoir fais qch dans le genre avec un multicastsocket (cf doc api)
je vais chercher voir si je retrouve pas le source auquel cas je te l enverrais
benohite 
-------------------------------
Réponse au message :
-------------------------------
> Voilà, mon problème est assez compliqué et je n'ai trouvé en aucun endroit de la toile réponse à ma question. Je tente donc le coup ici.
>
> Je bosse actuellement sur un Chat et je suis confronté à un problème de redistribution des données. J'ai créé un serveur qui accepte de multiples connections (normal pour un chat) et les clients sont gérés avec un thread.
>
> Seulement, je ne sais pas du tout comment redistribuer les données. Ma class ServeurParticulier, a trois méthodes (Fermeture(), Envoyer() Recevoir()), trois constructeurs (Entrant-InputStream, Sortant-OutputStream et CLient-Socket) contient une sous-classe Recevoir qui hérite de Thread pour lire les messages en boucle.
>
> Connaissez-vous un moyen d'appeller la méthode Envoyer() pour tous les ServeurParticuliers crées par le thread initial ?
>
> Mon script (Il ne répond qu'au client qui lui parle :-( ) :
>
> package chatfusa;
> /**
> * <p>Titre : Serveur du Chat de Fusa</p>
> * <p>Description : Ce serveur a pour rôle de créer un serveur particulier
> * pour chaque utilisateurs qui accèdent au chat. Ensuite, il a pour but de
> * redistribuer les données.</p>
> * <p>Copyright : Copyright (c) 2003</p>
> * <p>Société : </p>
> * @author non attribué
> * @version 1.0
> */
> import java.lang.*;
> import java.io.*;
> import java.net.*;
> import java.util.*;
>
> public class Serveur {
> public boolean Activation = true;
> public static String Partage;
> private static int NbUtilisateur;
> static final int Port = 8080;
> public Serveur() throws IOException
> {
> NbUtilisateur=0;
> ServerSocket ServeurRacine = new ServerSocket(Port);
> Information("Serveur " + ServeurRacine + " initialisé.");
> try
> {
> while(Activation=true)
> {
> // On attend ici jusqu'à avoir
> // une demande de Connexion:
> Socket Serveur = ServeurRacine.accept();
> Information("Client " + Serveur + " initialisé.");
> try
> {
> new ServeurParticulier(Serveur);
> }
> catch(IOException e)
> {
> Erreur("Echec de la connexion avec le client " + Serveur + ".");
> }
> }
> }
> finally
> {
> ServeurRacine.close();
> }
> }
> public String CalculerHeure()
> {
> GregorianCalendar Calendrier = new GregorianCalendar();
> int NbHeure = Calendrier.get(Calendar.HOUR);
> int NbMinute = Calendrier.get(Calendar.MINUTE);
> int NbSeconde = Calendrier.get(Calendar.SECOND);
> return NbHeure + ":" + NbMinute + ":" + NbSeconde;
> }
> public static void Erreur(String Type)
> {
> new FenetreErreur(Type);
> }
> public static void Information(String Type)
> {
> Fenetre.CentreOngletConsoleAffichage.setText(Fenetre.CentreOngletConsoleAffichage.getText() + "\n" + Type);
> }
> public void Distribuer(String Contenu)
> {
> Fenetre.CentreOngletAffichage.setText(Fenetre.CentreOngletAffichage.getText() + "\n" + Contenu);
> Partage = Contenu;
> }
> class ServeurParticulier extends Thread
> {
> private PrintWriter Sortant;
> private String Message;
> private String Contenu;
> private boolean ActivationParticulier = true;
> private String NomUtilisateur;
> private Socket ServeurParticulier;
> private BufferedReader Entrant;
> private String Precedent;
> // Cette méthode ferme le serveur pour le client en question lorsqu'elle est appelée
> public void Fermeture()
> {
> NbUtilisateur--;
> try
> {
> ServeurParticulier.close();
> Information("La connexion avec le client " + ServeurParticulier + " enregistré avec le pseudo : " + NomUtilisateur + " est maintenant fermée.");
> }
> catch(IOException e)
> {
> Erreur("La connexion avec le client " + ServeurParticulier + " enregistré avec le pseudo : " + NomUtilisateur + " ne s'est pas fermé correctement");
> }
> }
> public void Envoyer(String Contenu)
> {
> Sortant.println(Contenu);
> }
> public String Receptionner()
> {
> try
> {
> Contenu = Entrant.readLine();
> }
> catch(IOException e)
> {
> Erreur("Reception impossible avec le client " + ServeurParticulier + " enregistré avec le pseudo : " + NomUtilisateur);
> ActivationParticulier=false;
> }
> return Contenu;
> }
> public ServeurParticulier(Socket ServeurInterm) throws IOException
> {
> ServeurParticulier = ServeurInterm;
> Entrant =
> new BufferedReader(
> new InputStreamReader(
> ServeurParticulier.getInputStream()));
> // Autoriser l'auto-vidage:
> Sortant =
> new PrintWriter(
> new BufferedWriter(
> new OutputStreamWriter(
> ServeurParticulier.getOutputStream())), true);
> new Reception();
> //**** new Envoi();
> }
> // Cette classe permet la réception des messages du client, retourne une chaîne.
> class Reception extends Thread
> {
> public Reception()
> {
> NomUtilisateur = Receptionner();
> start();
> }
> public void run()
> {
> try
> {
> while(ActivationParticulier=true)
> {
> Envoyer(NomUtilisateur + " [" + CalculerHeure() + "] :" + Receptionner());
> }
> }
> finally
> {
> Fermeture();
> }
> }
> }
> //********
>
> }
> }
>
>
>
>
>
> **************************************************
> Hellway, Fusa : L'organisation contre l'impérialisme américain.
> http://fusa2.free.fr