Ho trovato una soluzione ma non mi sembra delle migliori.
Ho un thread che gestisce i messaggi in uscita e uno che gestisce quelli in entrata, sia su client che su server.
Per mandare messaggi globali dal server ho fatto così:
Col ciclo scorro tutta la lista, il metodo getServ() mi restituisce l'istanza del client connesso salvato sulla lista. Su ogni istanza ho lo stream già aperto alla connessione quindi utilizzo la funzione wrt() per scrivere su ogni client:codice:public void send(String msg) { Element h = root; for (h = root; h != null; h = h.next()) { h.getServ().wrt(msg); } }
Per scrivere poi su un solo client, cercando per nome, socket, connessione, istanza della classe o numero di client utilizzo un puntatore a quell'elemento della lista e lo uso così:codice:public void wrt(String msg) { out.println(msg); }
Mi sembra un po complessa come struttura in quanto passo liste, connessioni, istanze e stringhe da classe a classe.. Però sembra funzionare quindi potrebbe andare bene!codice:myCli.getServ().wrt("Benvenuto!");![]()