mmm... allora, come "selezioni" il client al quale mandare il messaggio?(presumo con il nome dell'utente associato a quel client)
in tal caso, invece dell Array, puoi usare un Hashtable(è un dizionrio già implementato in Java).
public cass ParteServer {
Hashtable ClienConnessi=new Hashtable<String,Socket>();
...main()...{
//ci sarà la dichiarazione del main o all'interno di una run se il server è un thread
ServerSocket serverS=new ServerSocet(12345);/12345 è la posrta su cui è in ascolto il servizio
Socket S=nul;
while(true){
S=serverS.accept();//attende richieste di connessione sulla porta 12345
ClientManager C=new ClientManager(this,S).start();
ClientConnessi.put(utente,C);
}
public invia_messaggio(String da, String a){
Socket S_mitt=new Socket(ClientConnessi.get(da).getInetAddress());
Socket S_dest=new Socket(ClientConnessi.get(a).getInetAddress());
//chiedi a S_mitt a ki vuole mandare un messaggio
//leggi il messaggio da S_mitt
//invii a S_dest
}
}
public class ClientManager extends Thread{
private Socket S;
ParteServer server;
public ClientManager (ParteServer server,Socket S){
this.S=S;
this.server=server;
}
void run(){
//operazioni tra client e server
//se vuoi mandare un messaggio da questa client ad un altro, fai così:
server.invia_messaggio();
}
}
naturalmente lo scritto così, senza neanke provarlo...forse riesci a fare qualkosa di + struttrato