Quote Originariamente inviata da Alex'87 Visualizza il messaggio
Se il server vuole mandare qualcosa al client avrà bisogno di un OutputStream verso di questo... Tu che hai? (tradotto: fai vedere quello che hai scritto...)
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ì:
codice:
    
public void send(String msg) {        Element h = root;
        for (h = root; h != null; h = h.next()) {
            h.getServ().wrt(msg);
        }
    }
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 wrt(String msg) {        out.println(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:
myCli.getServ().wrt("Benvenuto!");
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!