Salve a tutti sono nuovo del forum, vorrei realizzare un server java multithreading che implementi (per ora) una chat accessibile tramite applet.
In breve il server usa un ServerSocket.accept() all'interno di un while,e se la connessione è accetata allora lancia un nuovo thread e gli assegna un socket libero per gestire la connessione di un utente.
L'applet che fa da client (una volta premuto connetti) fa partire il login che se viene accettato lancia un thread che, anche qui gestisce la connessione. Ogni input viene inviato poi al thread se ci sono altri eventi (altri bottoni premuti ecc).
Per fare in modo però che un client riceva gli aggiornamenti ,senza dover attendere eventi dall'utente, in un singolo ciclo dei while sia del server sia dell'applet faccio un readLine() e un writeBytes() con un Thread.sleep(200) alla fine.Il server interpreta la ricezione solo se diversa da "0" e il client visualizza gli aggiornamenti solo se la ricezione è diversa da "0".In pratica comunicano sempre e svolgono le loro funzioni solo se la stringa ricevuta/inviata è diversa da "0".
Ora il mio dubbio è questo: se il server non ha aggiornamenti da fare o il client comandi da inviare si consuma cmq banda ad ogni ciclo..
Sarebbe,secondo voi, un metodo migliore e tecnicamente realizzabile (posso usare due socket per una stessa connessione?) quello di creare due thread separati e due socket per ogni utente, uno solo per la ricezione uno solo per invio (sia sul server sia sull'applet) cosi da fare in modo di far ricevere/inviare solo quando cè effettivamente qualcosa da fare?
Grazie delle eventuali risposte.
Satsha.