Semplice: nel server metti a disposizione un metodo ( send() ), che verrà utilizzato da qualsiasi thread per inviare un messaggio. Sarà il server che andrà a pescare il thread del destinatario giusto e gli dirà di inviare la stringa. Pressappoco in questo modo:
codice:
class Server extende Thread {
private class ServerThread extends Thread {
private ObjectOutputStream canaleOut;
private ObjectInputStream canaleIn;
private String id;
...
public void run() {
msg = (Messaggio) canaleIn.readObject();
send( msg );
}
public void inviaMessaggio(Messaggio msg) {
canaleOut.writeObject(msg);
canaleOut.flush();
}
public String getID() { return id; }
}
...
public void send(Messaggio msg) {
// Per chi è il messaggio?
String destinatario = msg.getDestinatario();
// cerco il destinatario
for (int i=0; i<mieiCliens.size(); i++) {
if ( ((ServerThread) mieiClients.elementAt(i)).getID().equals( destinatario ) ) {
// Ho trovato il destinatario... gli invio il messaggio
((ServerThread) mieiClients.elementAt(i)).inviaMessaggio( msg );
}
}
}
}
Ciao.