Partage
  • Partager sur Facebook
  • Partager sur Twitter

Serveur Multi-Client

Sujet résolu
    25 septembre 2017 à 18:16:28

    Bonjours,

    J'ai commencé à crée un serveur multi-client mais lors de l'envoie d'un message par un client(disons A) au serveur, le serveur ne le revoie pas au client(B)

    Merci de votre attention

    public class Chat {
    
    	public static void main(String[] args) {
    		ServerSocket socket;
    		InetAddress LocaleAdresse;
    
    		try {
    			socket = new ServerSocket(2009);
    			LocaleAdresse = InetAddress.getLocalHost();
    			String msg = String.valueOf(LocaleAdresse);
    			System.out.println("Le port du serveur à été crée sur le port " + socket.getLocalPort() + " avec l'ip "
    					+ msg.substring(msg.length() - 12, msg.length()));
    			Thread t = new Thread(new Accepter_clients(socket));
    			t.start();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    }
    
    class Accepter_clients implements Runnable {
    
    	private ServerSocket socketserver;
    	private Socket socket;
    	PrintWriter out;
    
    	public Accepter_clients(ServerSocket s) {
    		socketserver = s;
    	}
    
    	public void run() {
    		Socket[] client = new Socket[50];
    		PrintWriter[] flux = new PrintWriter[50];
    		int nbtclient = 0;
    		while (true) {
    			try {
    				socket = socketserver.accept();
    				out = new PrintWriter(socket.getOutputStream());
    				flux[nbtclient] = out;
    				client[nbtclient] = socket;
    				nbtclient++;
    				System.out.println("Quelqu'un s'est connecter");
    				Thread recoie = new Thread(new Runnable() {
    					BufferedReader in;
    					PrintWriter out;
    
    					@Override
    					public void run() {
    						try {
    							in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
    							while (true) {
    								String message_distant = in.readLine();
    								System.out.println(message_distant);
    								for (int i = 0; i < client.length; i++) {
    									if (client[i] != null) {
    										System.out.println(flux[i]);
    
    										out = new PrintWriter(flux[i]);
    
    										out.print(message_distant);
    										out.flush();
    									}
    
    								}
    
    							}
    						} catch (IOException e) {
    
    							System.out.println("Quelqu'un s'est deconnecter");
    						}
    
    					}
    				});
    				recoie.start();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }

    EDIT:

    résolut car enfaîte au lieu de:

    out.print(message_distant);

    Il faillait mettre:

    out.println(message_distant);

    -
    Edité par Oxmas 25 septembre 2017 à 18:27:39

    • Partager sur Facebook
    • Partager sur Twitter

    Serveur Multi-Client

    × 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