Ma_fack
Ominide
1 min. di lettura
Vota 4 / 5

Concetti Chiave

  • Il passaggio alla multiutenza richiede l'uso delle classi ListenerSocketManager e HandlerSocketManager.
  • Il ListenerSocketManager apre un socket "listener" per ascoltare le richieste dei client.
  • Per ogni richiesta ricevuta, viene creato un nuovo socket "handler" tramite HandlerSocketManager.
  • Il socket "handler" gestisce la ricezione delle richieste e l'invio delle risposte ai client.
  • La gestione multiutente implica una struttura più complessa con istanze separate per listener e handler.

Listener e Handler

Per muoverci verso la multiutenza, la classe SimpleServerSocketManager non basta più infatti si dovrà ricorrere ad altre due classi: ListenerSocketManager e HandlerSocketManager. Grazie a queste due nuove classe è possibile gestire più richieste da più client alla volta infatti ora si avrà la seguente situazione: il server apre subito un socket definito “listener” in ascolto delle richieste provenienti dai client; per ogni nuova richiesta che giunge al server, il server apre un nuovo socket definito “handler” e le richieste passano dal listener all’handler; attraverso l’handler, il server invia le risposte ai client. I costruttori delle classi sopra sono:

ListenerSocketManager (java.lang.String port)
HandlerSocketManager (ListenerSocketManager socket)

Mentre il Listener ha solo il costruttore, l’HANDLER ha I seguenti metodi:
- .riceviRichiesta () = riceve la richiesta inviata al server;
- .inviaRisposta (java.lang.String msg) = invia una risposta al client connesso attraverso il socket;
- .chiudi () = chiude il socket;

La gestione di più utenti è tuttavia un po’ più complessa infatti bisogna istanziare due diverse classi poiché è necessario avere una classe che si occupa solo del “listener” e una che si occupa solamente del “handler” poiché ogni volta che si riceve una richiesta al listener questo istanzia un’handler per gestire la richiesta.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community