Partage
  • Partager sur Facebook
  • Partager sur Twitter

Serveur multi-clients

Sujet résolu
    17 septembre 2011 à 18:34:57

    Bonjours,
    Est-il possible d'envoyer un message d'un serveur a tous ses clients connectés?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      17 septembre 2011 à 19:22:48

      Bonjour,
      Oui, c'est le principe d'un serveur.
      Au revoir

      (Sérieusement, c'est quoi l'intéret de cette question en Java o_O ?)
      • Partager sur Facebook
      • Partager sur Twitter
        17 septembre 2011 à 19:26:41

        Le message qui suit est une réponse automatique.
        Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
        Nous sommes néanmoins ouverts à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


        Manque d'informations sur le problème


        Bonjour,

        Le message que tu as posté n'est pas assez détaillé pour que les zéros puissent t'aider.
        Afin de faciliter la tâche des autres membres, il t'est demandé d'expliquer ce que tu cherches à faire et ce qui ne va pas. Il te faut donc fournir les messages d'erreur obtenus et/ou expliquer le comportement inattendu de ton script.
        Te contenter de fournir ton code en disant « ça ne marche pas » n'est pas suffisant.

        Je t'invite donc à modifier ton message afin de le clarifier.

        Merci de ta compréhension. :)
        • Partager sur Facebook
        • Partager sur Twitter
        Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »
          17 septembre 2011 à 21:32:22

          Ma question était mal posée :
          Avec ce code si un client se connecte, un thread(ServeurThread) sera crée et le client donc sera lié en quelques sortes a ce thread et donc, si j'envoi un message a partir de thread, il ne s'enverra que a un client donc ma question est : comment je fais pour que ce message s'envoi à tout les clients connectés

          Serveur.java
          public class Serveur {
          
          	public static void main(String[] args)
          	{
          		try {
          			ServerSocket serveur = new ServerSocket(11111);
          			Socket sk = new Socket();
          			while(true)
          			{
          				sk = serveur.accept();
          				Thread test = new Thread(new ServeurThread(sk));
          				test.run();
          			}
          		} catch (IOException e) {
          			// TODO Auto-generated catch block
          			e.printStackTrace();
          		}
          		
          	}
          }
          

          ServeurThread.java
          public class ServeurThread implements Runnable {
          
          	private Socket socket;
          	private PrintWriter out;
          	private BufferedReader in;
          	public ServeurThread(Socket sk) {
          		// TODO Auto-generated constructor stub
          		socket = sk;
          	}
          
          	@Override
          	public void run() {
          		// TODO Auto-generated method stub
          		try {
          			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
          
          			out = new PrintWriter(socket.getOutputStream());
          			
          			
          		} catch (IOException e) {
          			// TODO Auto-generated catch block
          			e.printStackTrace();
          		}
          	}
          
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            18 septembre 2011 à 12:39:46

            Premièrement, je trouve ta classe mal nommé.

            Plutôt que ServeurThread, je la nommerais ClientThread. En effet, il s'agit d'un thread pour UN client. Et il y aura donc autant de thread que de clients connectés.

            Pour renvoyer un message à tous les clients, il n'y a pas de secret, il faut que tous les thread renvoient la dites informations.
            Il faut donc rajouter dans ta classe Serveur, une liste des clients connectés.
            Cette liste doit être mise à jour à chaque connexion, et déconnexions des clients.

            Pour renvoyer une information il "suffira" de boucler sur tous les thread enregistré de la liste et d'envoyer le message.

            C'est là que les choses deviennent complexe. Car avec beaucoup de thread, il devient nécessaire de protéger la liste des connexions, ainsi que les ressources des socket (out surtout) par des mutex.

            J'avais réponde à un sujet similaire sur l'architecture réseau. Apparemment la réponse avait aidé. Voilà le sujet en question:
            http://www.siteduzero.com/forum-83-674 [...] -serveur.html
            • Partager sur Facebook
            • Partager sur Twitter
              18 septembre 2011 à 12:52:31

              Oui merci c'est ce que j'ai fais j'aurais du marqué le sujet résolu (j'ai fais un tableau de Socket)
              • Partager sur Facebook
              • Partager sur Twitter
                18 septembre 2011 à 19:03:04

                Si tu comptes modifier la liste des clients dans ton thread ou même un client, c'est toujours bien de synchroniser la liste histoire de ne pas avoir de mauvaises surprises.
                • Partager sur Facebook
                • Partager sur Twitter
                  18 septembre 2011 à 19:17:40

                  Merci c'est ce que j'ai fais ^^
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Serveur multi-clients

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown