marco1993 ha scritto:
Questa è l'ultima prova che ho fatto... Ho messo direttamente nel server il frame e il bottone per cambiare testo alla label, e ho creato una classe application da cui faccio partire due client con nomi differenti... ma non funziona...
Ok, ho visto il codice. Ma ... è parecchio confuso/inadatto! Innanzitutto il concetto è che il server espone una serie di metodi tramite la remote interface. In sostanza è il client che invoca "qualcosa" sul server ... NON il contrario.
Quindi non ha granché senso che nel actionPerformed invochi tu cambia() cercando di usare "qualcosa" dal client. Anche perché potresti avere più client! Quindi Client.nome CHE COSA?? Non ha senso. "Client" e "server" sono comunque due istanze di JVM differenti (possono essere sulla stessa macchina fisica o due macchine distinte). Quindi la classe Client caricata sul Server non c'entra nulla con quella che il client carica. Anche se tu il file Client.class lo metti a disposizione di entrambe le parti, la JVM "server" caricherà la classe Client ma il campo statico nome vale null e non c'entra niente con il Client caricato dalla JVM "client".
Se vuoi che un
client possa cambiare una label sul frame che gestisce il server, allora metti un parametro al cambia() (es. cambia(String nome) ) e così quando un client ottiene il ServerInterface dal lookup, può invocare il cambia passando qualcosa.
Se invece intendi qualcos'altro, chiarisci meglio, perché quel tuo codice è dubbio/confuso.