Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [java]applet client

  1. #1
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86

    [java]applet client

    salve sapreste dirmi dove trovare informazioni su come realizzare un AppletClient che si connetta ad un server...
    ho un programmino pe la creazione di una lista di nominativi...
    questo programmino si connette ad un server e fa salvare da quest'ultimo i nominativi in memoria...
    ora io devo realizzare un applet del mio programmino e collegare questo applet al server...
    potreste suggerirmi come fare?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java]applet client

    Originariamente inviato da nicola
    ora io devo realizzare un applet del mio programmino e collegare questo applet al server...
    Comunicare con il server ok, ma in che modo e con quale protocollo? Con i socket? Con HTTP? Con RMI? Con altro?
    E la applet viene scaricata dallo stesso host con cui devi poi comunicare? Le applet non firmate digitalmente infatti hanno delle pesanti limitazioni, tra le altre cose, anche per quanto riguarda il networking.
    Spiega qualcosa in più.
    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 L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    allora....
    comunicano tramite socket...
    io sto facendo due programmini separati uno il server e l'altro un applet che si collega al server richiedendo dei servizi...
    i due programmini saranno sempre installati sulla stessa makkina!

    l'applet è in pratica un atm, che gestisce i conti correnti bancari, il quale richiede al server tutti i servizi, di conseguenza l'applet ogni operazione la richiederà ed attenderà la risposta...
    come faccio queste operazioni di collegamento al server ed invio di richieste?
    grazie...

  4. #4
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    ho trovato questo codice, ma non so bene come utilizzarlo... potreste aitarmi... grazie
    codice:
    public void start()
        {
            initLookAndFeel();
            ArchivioClient.setAddress(serverInetAddress);
        }
    codice:
    private final void initLookAndFeel()
        {
            UIManager.getLookAndFeelDefaults().put("ClassLoader", getClass().getClassLoader());
            try
            {
                UIManager.setLookAndFeel("de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel");
            }
            catch(Exception exception) { }
        }
    codice:
    private void setServerInetAddress()
        {
            String inetAddress = JOptionPane.showInputDialog(jContentPane, "Inserisci indirizzo del server: ", "Indirizzo Server", 3);
            if(inetAddress == null || inetAddress.trim().length() == 0)
            {
                if(inetAddress != null)
                {
                    JOptionPane.showMessageDialog(jContentPane, "Impostato il valore di default: localhost", "ATTENZIONE", 2);
                    ArchivioClient.setAddress("localhost");
                    serverInetAddress = "localhost";
                }
            } else
            {
                JOptionPane.showMessageDialog(jContentPane, (new StringBuilder("Impostato il nuovo indirizzo: ")).append(inetAddress).append("\nATTENZIONE! Il nuovo indirizzo sar\340 valido esclusivamente\nper l'esecuzione corrente").toString(), "Conferma Operazione", 1);
                ArchivioClient.setAddress(inetAddress);
                serverInetAddress = inetAddress;
            }
        }
    codice:
    public void init()
        {
            String iNetAddress = getParameter("hostname");
            serverUrl = getParameter("url");
            serverUrl = serverUrl.substring(0, serverUrl.lastIndexOf('/') + 1);
            serverInetAddress = iNetAddress.equals("") ? "localhost" : iNetAddress;
            ArchivioClient.setAddress(serverInetAddress);
            initLookAndFeel();
            setContentPane(getJContentPane());
            setSize(640, 480);
            setJMenuBar(getJMenuBar());
            setVisible(true);
        }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nicola
    i due programmini saranno sempre installati sulla stessa makkina!
    Ok, la cosa fondamentale per non avere problemi è che se stai lavorando sull'host "pippo" e con il browser vai sull'host "pluto" da cui scarichi la pagina web e la applet, allora poi la applet può connettersi solo con "pluto", non con un altro host es. "paperino".

    Originariamente inviato da nicola
    come faccio queste operazioni di collegamento al server ed invio di richieste?
    Hai detto che usi i socket. Ok, ma non basta. Come è fatto il "protocollo" di comunicazione? Cioè cosa si devono scambiare gli host? Dei dati testuali (es. linee di testo)? Dei pacchetti di N byte? Degli oggetti serializzati?

    Con i socket l'unica cosa certa è che i due host possono scambiarsi N byte. Cosa ci sia in questi byte ... devi stabilirlo tu. In pratica cosa inviare e cosa aspettarti da una parte e dall'altra.
    Conosci già come funzionano i socket e quali classi usare? Hai già letto dei tutorial sull'argomento o hai bisogno di sapere dove trovarli?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    allora...
    per comunicare io uso queste linee di codice...
    il server riceve con:
    codice:
    ObjectInputStream is;
    			is= null;			
    			is = new ObjectInputStream(socket.getInputStream());
    			BufferedReader br = new BufferedReader(new InputStreamReader(is));
    int controllo  = br.read();
    il client invia con:
    codice:
    ObjectOutputStream os; 
    os = null;
    try
    {
    valore = 1;	
    os = new ObjectOutputStream (client.getOutputStream());
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    bw.write(valore);
    bw.flush();
    intendi questo?....
    il client invia al server il quale fa...
    codice:
    System.out.println("stampo la scelta del client[ArchivioSingle](284): "+controllo);
                switch(controllo)
                {
    ed a seconda di cosa sia "controllo" fa delle operazioni...
    ora il problema è fare in modo che quello che fa il client lo faccia l'applet...

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nicola
    codice:
    ObjectInputStream is;
    			is= null;			
    			is = new ObjectInputStream(socket.getInputStream());
    			BufferedReader br = new BufferedReader(new InputStreamReader(is));
    int controllo  = br.read();
    il client invia con:
    codice:
    ObjectOutputStream os; 
    os = null;
    try
    {
    valore = 1;	
    os = new ObjectOutputStream (client.getOutputStream());
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
    bw.write(valore);
    bw.flush();
    intendi questo?....
    Sì, concettualmente va bene. Ma .... a che ti servono ObjectInputStream/ObjectOutputStream??? In genere vengono usati per la serializzazione degli oggetti (che non usi).

    Nel tuo codice sopra è del tutto superfluo prendere l'InputStream del socket (con getInputStream), metterlo in un ObjectInputStream (che è sempre un InputStream) e poi passarlo al InputStreamReader. Idem per l'output.

    Gli stream che ottieni dal socket li puoi passare direttamente al costruttore delle classi XXXStreamReader!!!

    Originariamente inviato da nicola
    il client invia al server il quale fa...
    codice:
    System.out.println("stampo la scelta del client[ArchivioSingle](284): "+controllo);
                switch(controllo)
                {
    ed a seconda di cosa sia "controllo" fa delle operazioni...
    La variabile 'controllo' è di tipo String, pertanto non puoi usarla nella espressione dello switch! Se vuoi verificare se la stringa contiene delle stringhe specifiche, devi fare una catena di if usando equals() per confrontare il contenuto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Originariamente inviato da andbin
    La variabile 'controllo' è di tipo String, pertanto non puoi usarla nella espressione dello switch! Se vuoi verificare se la stringa contiene delle stringhe specifiche, devi fare una catena di if usando equals() per confrontare il contenuto.
    Ehm... attenzione che l'utente ha postato questo:
    codice:
    ObjectInputStream is;
    			is= null;			
    			is = new ObjectInputStream(socket.getInputStream());
    			BufferedReader br = new BufferedReader(new InputStreamReader(is));
    int controllo  = br.read();
    controllo, quindi, è un intero (che viene concatenato con una stringa)...

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LeleFT
    Ehm... attenzione che l'utente ha postato questo:
    int controllo = br.read();
    controllo, quindi, è un intero (che viene concatenato con una stringa)...
    Ah già .. non l'avevo nemmeno notato. Ma così legge 1 solo carattere .... non so se è proprio quello che voleva fare....

    In genere se uno usa BufferedReader tipicamente è perché vuole leggere "a righe".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di nicola
    Registrato dal
    May 2007
    Messaggi
    86
    no, no, ho usato l'intero proprio perchè lo swich per quel che mi riguarda lo trovo più semplice dell'equals...
    cmq and...
    puoi dirmi ora che la cosa forse è più chiara come fare l'AppletClient?

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.