Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    18

    Server che invia messaggi a più client

    Ragazzi sono alle prime armi con java, sto cercando di creare un server in java che risponda a più client, per questo sto utilizzando i thread. Ora però mi è sorto un problema. se devo scrivere dei messaggi dal server a tutti i client connessi, come posso fare? Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il server ha una lista dei client a lui collegati immagino... Scorrila e per ciascun client fai la send. Come dipende dal codice che hai scritto (e che non hai pubblicato).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    18
    Si, ho creato una lista su cui aggiungo ogni client che viene accettato dal server. Nella mia lista salvo la connessione.
    Come faccio però poi a inviare un messaggio dalla connessione? Intendo chiedere se dovrei aprire ogni volta uno stream di output per ogni client..

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se il server vuole mandare qualcosa al client avrà bisogno di un OutputStream verso di questo... Tu che hai? (tradotto: fai vedere quello che hai scritto...)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    18
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Se il server vuole mandare qualcosa al client avrà bisogno di un OutputStream verso di questo... Tu che hai? (tradotto: fai vedere quello che hai scritto...)
    Ho trovato una soluzione ma non mi sembra delle migliori.

    Ho un thread che gestisce i messaggi in uscita e uno che gestisce quelli in entrata, sia su client che su server.

    Per mandare messaggi globali dal server ho fatto così:
    codice:
        
    public void send(String msg) {        Element h = root;
            for (h = root; h != null; h = h.next()) {
                h.getServ().wrt(msg);
            }
        }
    Col ciclo scorro tutta la lista, il metodo getServ() mi restituisce l'istanza del client connesso salvato sulla lista. Su ogni istanza ho lo stream già aperto alla connessione quindi utilizzo la funzione wrt() per scrivere su ogni client:
    codice:
        
    public void wrt(String msg) {        out.println(msg);
    
    
        }
    Per scrivere poi su un solo client, cercando per nome, socket, connessione, istanza della classe o numero di client utilizzo un puntatore a quell'elemento della lista e lo uso così:
    codice:
    myCli.getServ().wrt("Benvenuto!");
    Mi sembra un po complessa come struttura in quanto passo liste, connessioni, istanze e stringhe da classe a classe.. Però sembra funzionare quindi potrebbe andare bene!

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ma la wrt su cosa scrive? Cos'è out?
    Come ottieni il collegamento client-server?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    18
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Ma la wrt su cosa scrive? Cos'è out?
    Come ottieni il collegamento client-server?
    Ah scusami, out è il PrintWriter che scrive sull'ouput stream di ogni client, il collegamento lo ottengo semplicemente creando un ServerSocket dal lato server e un Socket dal lato client, poi apro un PrintWriter per scrivere e un BufferedReader per leggere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.