2013-03-29 6 views
0

Je suis en train de coder le chat du serveur à l'aide des sockets TCP. J'ai mis en place des messages publics et privés. Maintenant, comment puis-je faire des chaînes? Comment puis-je lier des canaux avec des clients socket? J'ai fait un String[] comme ceci:Création d'un serveur de conversation multithread avec des sockets

if (frase.startsWith("/make")) { 
    //crea sala 
    String[] privado = frase.split("\\s", 2); 
    synchronized (this) { 
     end = false; 
     for (int i = 0; i < MAX && !end; i++){ 
      if (salas[i] == null) { 
       canal = privado[1]; 
       salas[i] = canal; 
       end = true; 
      } else if (privado[1].startsWith(salas[i])) { 
       salidaACliente.println("Ya existe " + privado[1] + "\n"); 
       end = true; 
      } 
      if (i == MAX - 1) { 
       salidaACliente.println("Espacio de canales lleno.\n"); 
       end = true; 
      } 
     } 
    } 
} 

Par exemple:

  • 0-channel1
  • 1-channel2

Tous les utilisateurs peuvent voir les canaux créés à l'aide d'une commande /seechannels

String[] salas = new salas[20]; 

Mais jusqu'à présent, un canal est seulement un String. Comment puis-je maintenant lier un canal avec un socket en utilisant /join channel1?

Répondre

0

Vous pouvez, par exemple, créer un tableau dans tous les threads, qui stocke les canaux dont l'utilisateur fait partie.

boolean joinedChannels[] = new Boolean[max_channels]; 

// Remember to intialize the array. 

if (cmd == "/joinchannel") {   // cmd here is the issued command 
    joinedChannels[args[0]] = true;  // args[] is an array of the arguments 
             // following the command. This sets the 
             // desired channel to be active. 
} else if (cmd == "/leavechannel") { 
    joinedChannels[args[0]] = false;  // And this here sets it inactive. 
} 
Questions connexes