Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Server Multithread java

    Ciao, la mia intenzione era di creare un server multithread per gestire una chat.
    Pensavo di creare un thread per ogni client che si connette....
    solo che poi ho pensato se conquesto metodo e possibile gestire anche un numero elevato di connessioni di client....tipo anche mille o piu???

    Qualcuno ha qualche consiglio???

    grazie

  2. #2
    Esiste come tecnica di programmazione dei server quella del pool di thread.

    che sarebbe :

    1) crei all'avvio n thread
    2) quando ariva una nuova connessione al primo thread non occupato
    3)quando un thread ha finito di gestire la connessione col client ritorna libero
    4) se il numero di connessioni raggiunge n, mandi un messaggio di errore al client del tipo "server sovraccarico"

    Il vantaggio principale è che non hai l'overload della creazione di un thread ogni volta.
    Cmq questo non risponde alla tua domanda ma ho pensato che magari ti era utile saperlo.

    Per la tua domanda la risposta è :

    normalmente i server vengono implementati come tu hai detto, cioè un thead che gestisce il socket principale
    e altri thread che gestiscono i socket ritornati dalla accept. Per l'overload o metti un limite al numero massimo di thread (come nel pool di thread ma anche se crei un nuovo thread ogni volta che un client si connette, basta avere una variabile statica che tiene il conto dei thread attivi e se sono troppi mandi un messaggio di errore) oppure....
    se ti si connettono troppi client il server andra a rilento...ma non ci puoi fare niente....comunque io sceglierei
    di mettere un limite al numero massimo di connessioni. è sicuramente la scelta implementativa più pulita.
    Nota che puoi anche fare un server con un solo thread con la select (devi usare i java.nio.channels però) ma in questo caso il numero di client necessario per farti impallare il server è anche minore rispetto ai thread.


    ciao
    MB

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.