2017-12-26 21 views
-1

Ich erstelle ein Chat-Server-Programm, ich habe den hier geschriebenen Code http://makemobiapps.blogspot.com/p/multiple-client-server-chat-programming.html verwendet, und ich möchte einige Änderungen hinzufügen, ich versuche, den Server eine Nachricht senden zu lassen an alle verbundenen Clients. Ich habe diesen Code hinzugefügt. aber es hat nicht funktioniert. Es sendet die Nachricht an Clients, aber in falscher Weise, wie es die Nachricht an nur einen Client sendet. Dann akzeptiert es keinen Client mehr, eine Verbindung mit dem Netzwerk herzustellen.Nachricht vom Server an mehrere Clients in Java senden

Dies ist der Code, den ich Scanner

while (true) { 
    try { 
    int i = 0; 
    clientSocket = serverSocket.accept(); 
    for (i = 0; i < maxClientsCount; i++) { 
     if (threads[i] == null) {       
     (threads[i] = new clientThread(clientSocket, threads)).start(); 
     break; 
     }   
    } 
    // this my code I add to broadcast a message to all clients 
    if(!in.nextLine().isEmpty()){ 
     for (i = 0; i < maxClientsCount; i++) { 
     PrintStream os = new PrintStream(clientSocket.getOutputStream()); 
     os.println("Server :"+in.next()); 
     } 
    } 

    if (i == maxClientsCount) { 
     PrintStream os = new PrintStream(clientSocket.getOutputStream()); 
     os.println("Server too busy. Try later."); 
     os.close(); 
     clientSocket.close(); 
    }   
    } 
    catch (IOException e) { 
    System.out.println(e); 
    } 

bitte es eine Idee, mir helfen :) dank

Antwort

1
for (i = 0; i < maxClientsCount; i++) { 

hier über i zwischen 0 und maxClientsCount Sie Looping mit hinzufügen.

PrintStream os = new PrintStream(clientSocket.getOutputStream()); 

Hier können Sie auf die zuletzt akzeptierte Fassung schreiben, maxClientsCount-1 Zeiten und i ignorieren vollständig.

os.println("Server :"+in.next()); 

Hier liest du ein neues Token von Ihrem Scanner jedes Mal, um die Schleife.

Nicht viel davon ergibt Sinn. Sicher, was du meinst ist:

+0

Ihre Antwort ist richtig, es hat getan, was ich will. Aber ein Problem entsteht hier. Wenn die Verbindung gestartet wird, warten die Clients auf die Eingabe einiger Daten durch den Server und können dann Nachrichten senden. Ich hoffe du verstehst mich richtig! –

+0

Ich weiß was es macht. Sie haben nicht gesagt, was Sie * wollen * wollen. – EJP

Verwandte Themen