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

    [MULTITHREADING]Server Multithreading

    ciao a tutti
    devo implementare un server multithreading che soddisfi vari servizi
    il problema è.. ma tutti i servizi a cui deve rispondere li devo mettere sempre nella stessa classe ke estende la classe thread?? o per ogni servizio devo creare una classe apposita?
    questo è il codice della mia classe ke in risposta di un numero di conto corrente deve restituire un saldo..
    codice:
    /**
     * 
     */
    package gccb;
    
    import java.io.*;
    import java.net.Socket;
    
    /**
     * @(#)ServeOneClient.java
     *
     *
     * @author Raffaella
     * @version 1.00 2007/4/24
     */
    
    
    public class ServeOneClient extends Thread {
    
    //	Definizione degli attributi di classe
    	private Socket socket;
    	private BufferedReader in;
    	private PrintWriter out;
    	
    	//Definizione del costruttore di classe
    	public ServeOneClient(Socket s) throws IOException 
    	{
    		socket = s;
    		in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
    		start();
    	}
    	
    	//Ridefinizione del metodo run()
    	public void run() {
            try {
                String str = in.readLine();
                int n = Integer.parseInt(str);
                float saldo = ContiCorrentiBancari.saldo(n);
                out.println(saldo);
    		}
            catch (IOException exc) {
    		    System.out.println("IO Exception occurred");
    		}
            catch (NumberFormatException exc) {
                out.println("ERR_FORMAT");
    		}
            catch (NullPointerException exc) {
                out.println("ERR_NOTFOUND");
    		}
            try {
                socket.close();
    		}
            catch (IOException e) {
                System.out.println("Socket not closed!");
    		}
        }
    }
    ora vorrei sapere se il server deve effettuare una apertura di un nuovo conto(il cui metodo già ce l'ho) dove lo devo mettere? sempre in questo run?? e come?
    grazie per le spiegazioni
    attendo vostre illuminazioni

  2. #2
    Beh è evidente che il crescere del numero di servizi ti porti a questa riflessione, anche perchè il thread creato dovrebbe solo gestire la connessione con il server e non anche i servizi.

    Facciamo il quadro della situazione:
    - lanci il server e lo metti in ascolto con accept
    - per ogni connessione in ingresso ricevuta, il server avvia un thread chiamanto ConnectionManager che si occuperà di quella connessione (questo significa server multithreading)
    - il thread ConnectionManager da il benvenuto al client e si mette in attesa di un messaggio dallo stesso
    - supposto che il client sappia cosa inviare (dopotutto si devono accordare su un tuo protocollo), invia "1" al ConnectionManager, il quale associa tale valore alla scelta del servizio_saldo. Il servizio_saldo corrisponde alla richiesta di saldo, pertanto il ConnectionManager avvia il servizio_saldo che restituisce un float al ConnectionManager. Quest'ultimo inoltra il risultato al client e riparte la ruota con il ConnectionManager di nuovo in attesa di un comando dal client
    - il client invia 2 al ConnectionManager, quest'ultimo lancia il servizio apri_conto e come prima, ritorna qualcosa al client che può essere un parametro o quello che vuoi.

    A conti fatti, in questo modo dovrebbero esserci almeno 3 classi:
    - Server, gestore di ServerSocket, avvia un ConnectionManager per ogni accept accordata
    - ConnectionManager extends Thread, gestore di socket, invoca i metodi di ContoCorrente
    - ContoCorrente, realizza i servizi.

    Spero di averti aiutato, ciao.
    Forza e onore

  3. #3
    grazie della risposta
    adesso provo
    (kissà cosa uscirà da sotto )

  4. #4
    Figurati...
    Sono ansioso di sapere...
    Forza e onore

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 © 2026 vBulletin Solutions, Inc. All rights reserved.