Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35

Discussione: Java Client Server

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305

    Java Client Server

    Salve vorrei chiedervi un parere , secondo voi in un applicazione client /server in java, dal punto di vista del client è più oneroso aprire ogni volta una connessione o tenere una connessione aperta?

    Stessa domanda dal punto di vista del server.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    secondo voi in un applicazione client /server in java, dal punto di vista del client è più oneroso aprire ogni volta una connessione o tenere una connessione aperta?
    Precisa "client-server", cosa/quanto devono scambiarsi, per quanto tempo ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    ci sn 20,30 client e un server multithread. I client devono loggarsi, poi devono scaricare delle informazioni dal server, ed è possibile ma non certo che debbano inviarne altre durante il giorno, e richiederne altre al server.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    ci sn 20,30 client e un server multithread. I client devono loggarsi, poi devono scaricare delle informazioni dal server, ed è possibile ma non certo che debbano inviarne altre durante il giorno, e richiederne altre al server.
    Protocollo "custom" su socket TCP? Se sì, comunque visto il basso numero di client, essi potrebbero tranquillamente tenere "su" la connessione finché necessario, cioè anche per tutta la durata della applicazione client.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    capito ma in generale cosa è più oneroso?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    La classe ClientConnection, implementa un oggetto che permette di effettuare richieste al server, poichè questo oggetto deve essere disponibile in più classi, secondo voi è fattibile una cosa simile:
    codice:
    public class GestoreConnessione {
        public static final ClientConnection connessione=new ClientConnection();
    }
    da renderlo una specie di variabile globale

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    secondo voi è fattibile una cosa simile:
    da renderlo una specie di variabile globale
    In generale, se vuoi avere un oggetto "singolo" accessibile da qualunque classe, c'è il pattern "singleton" che serve apposta per questo.
    Avere un campo pubblico come quello mostrato da te, no, generalmente non è la cosa migliore.

    Ci potrebbero essere altri "design" che si adattano meglio al tuo caso ma bisognerebbe vedere chi/quanti usano ClientConnection e cosa fa e ci devi fare con quel ClientConnection. Ah, precisa cosa è questa ClientConnection (quale framework/libreria).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    ClientConnection è una classe scritta da me, che ha un campo socket che permette di gestire la connessione col server. un metodo connect che ti fa collegare al server, un metodo download, che scarica informazioni dal server, un metodo insert che invia la server delle informazioni da inserire nel db e cosi via.. il fatto è che ciascuno di questi metodi può anche essere utilizzato in classi diverse, considerando che il software ha un interfaccia grafica .

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    Ecco il codice
    codice:
    package jcallremember.client;
    
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.OutputStream;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.sql.ResultSet;
    
    
    /**
     *
    
    
     * Questa Classe implementa una connessione al server 
     */
    public class ClientConnection {
        private Socket conn;
        private InetAddress address;
        private final int serverPort=40000;
       
        /**
         * Invia al server le informazioni di login e si connette
         * @param login
         * @throws java.net.ConnectException
         * @throws UnknownHostException
         * @throws IOException 
         */
        public void connect(Credenziali login) 
                throws java.net.ConnectException,
                UnknownHostException, IOException{
            this.address=InetAddress.getLocalHost();
            this.conn=new Socket(address,this.serverPort);
            Boolean isConnect;
            OutputStream os = conn.getOutputStream(); 
            ObjectOutputStream obs = new ObjectOutputStream(os);
            obs.writeObject(login);
            InputStream is = conn.getInputStream(); 
            ObjectInputStream ois = new ObjectInputStream(is);
            isConnect = ois.readBoolean();
            if(!isConnect){
                   throw new java.net.ConnectException("Username o Password"
                                + " inesatte!");
            }
        }
            
            
        public void connect
        
        public ResultSet downloadImpegniDelGiorno(){
            String query="Select * from Cliente where ";
            return null;
        }
          
    }
    COnsidera che non è completo e che ci sono degli errori! E' piuttosto per darti un' idea.
    Il metodo connect è perfettamente funzionante.
    Sinceramente però non capisco come applicare a questa classe il pattern singleton !
    Ultima modifica di linux_r; 08-04-2014 a 17:48

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    ClientConnection è una classe scritta da me
    Ok.

    Quote Originariamente inviata da linux_r Visualizza il messaggio
    Sinceramente però non capisco come applicare a questa classe il pattern singleton !
    Al massimo potrebbe essere "singleton" la classe GestoreConnessione .... non ClientConnection.
    ClientConnection mi pare più sensato che sia una normale classe, con metodi di istanza che forniscono le "primitive" del tuo protocollo di comunicazione, nascondendo i dettagli tecnici interni.

    Quote Originariamente inviata da linux_r Visualizza il messaggio
    considerando che il software ha un interfaccia grafica
    Intendi interfaccia Swing? Allora considera anche tutte le implicazioni sul threading in Swing, ovvero il networking non dovrebbe essere fatto nel contesto del Event Dispatch Thread ma in un thread a parte (con quello che ne comporta).


    P.S. quando scrivi qualunque cosa su socket, es. con writeObject, ricordati sempre di fare un bel flush() !

    P.S. 2: e comunque non è detto che il concetto di singleton sia appropriato nel tuo caso. Bisognerebbe capire/vedere di più di quanto devi fare.
    Ultima modifica di andbin; 08-04-2014 a 18:08
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.