Ok...allora la mia interpretazione è correta (in base a quanto hai detto tu (VincenzoTheBest).
Io sto iniziando a buttare giù un po di codice...
La mia idea è la seguente:
Creo una classe Master che non fa altro che aspettare delle connessioni in ingresso
tramite il solito ServerSocket, all'interno di un ciclo while() infinito, dopodichè,
da in pasto ad un thread (chiamato da me MasterThread) la connessione col client appena collegato e torna in attesa di connessioni nel suo cicletto while infinito.
Il MasterThread è quello che sto attualmente sviluppando...
l'idea sarebbe quella di avere una lista (hashtable), come variabile di classe,
nella classe Master e, ogni slave aggiorna questa lista comunicando il proprio IP e stato ("free" o "busy"). a questo punto, tornando al MasterThread, questo controlla la lista e, se arriva a scorrerla tutta senza trovare alcun slave libero, invia direttamente il messaggio al client "SYSTEM BUSY", altrimenti, al primo slave libero, apre una nuova connessione con questìultimo e invia la stringa "START ACTIVITY". Intanto, una volta ricevuta tale stringa da parte del MasterThread, lo slave in questione dovrà aggiornare il suo stato in "BUSY" nella lista (hashtable) della classe Master. A tal proposito si potrebbe anche fare, credo, che lo stato di tale slave, venga aggiornato direttamente dal thread MasterThread, col codice del tipo Master.listaSlaves.put("IP slave", "stato slave"). Forse quest'ultima variante è più semplice da implementare? Considerando, come giustamente dicevi tu, che le due classi Master e MasterThread girano sulla stessa macchina fisica (in teoria) mentre la classe Slave gira su macchine diverse in un range di indirizzi ip compreso tra 150.100.100.101 e 150.100.100.109. Corretto?
Intanto proseguo...vediamo che combino... ;-)
Ti aggiornerò via via...
Grazie come sempre!