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

    Java application to applet

    Buongiorno a tutti, vi pongo il mio quesito:

    Ho un applicazione java da eseguire sul client, dopo specifiche operazioni genera una stringa e questa vorrei che venisse inviata ad un applet per poi gestirla ed inviarla al server..

    come posso fare? sono nel buio più totale..

    Grazie

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Penso che così sia fattibile: puoi aprire sull'applet una porta che resta in ascolto dei dati in arrivo dall'applicazione desktop.
    Ciò, naturalmente, a patto che le impostazioni di sicurezza lo consentano: come ben sai, le applet "vivono" in un ambiente estremamente controllato, chiamato sandbox. Dovrai quindi agire sui files con le policy di sicurezza della VM, in modo da consentire l'esecuzione di questo tipo di operazione.

  3. #3
    Ottimo, seguendo il tuo consiglio sono riuscito utilizzando i socket.

    ma, con questi sai se è possibile continuare a ristabilire la connessione? ogni volta che viene abbattuta si ferma il loop U_U

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Forse... ma se non spieghi un po' meglio cosa intendi (e - soprattutto - se non posti il codice di cui stai parlando) non so proprio risponderti

  5. #5

    hai anche ragione.. era un po' tardi, e mi sembrava ovvio che chiunque sapesse di cosa stessi parlando XD..


    Questa è la mia applet, dovrebbe rimanere in ascolto sul socket, in attesa di una stringa, poi questa verrà processata e usata per compilare un form..
    codice:
    import java.applet.*;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    public class test extends Applet {
    
        Socket socket;
        DataInputStream inStream;
        PrintStream outStream;
    
        @Override
        public void init() {
           
                try
                {
                    socket = new Socket("localhost", 8205);
                    inStream = new DataInputStream(socket.getInputStream());
                    outStream = new PrintStream(socket.getOutputStream());
                }
                catch(Exception exc){
                    System.out.println("Error in initialize the network - " + exc.toString());
                }
    
    
                while(true){
                    String newOrder = null;
                try {
                    newOrder = inStream.readLine();
                } catch (IOException ex) {
                    Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
                }
                System.out.println(newOrder);
    	    }
        }
    }
    Questa è l'applicazione che si avvia una sola volta, fa diverse letture da smartcard, e rimane sempre all'interno del ciclo while. C'è un modo per gestire il socket in modo tale da "tirare su" la connessione all'avvio di ogni applet?

    Così come è adesso funziona, ma se chiudo la applet.. al riaprirla..

    codice:
    package lettorecrs;
    import java.net.URISyntaxException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.smartcardio.*;
    import java.util.*;
    import java.io.*;
    import java.awt.AWTException;
    import java.awt.Image;
    import java.awt.PopupMenu;
    import java.awt.SystemTray;
    import java.awt.Toolkit;
    import java.awt.TrayIcon;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.MenuItem;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class Main{
        public static void main(String[] args) throws IOException{
             ServerSocket serverSocket = new ServerSocket(8205);
             Socket connessione = serverSocket.accept();
             PrintStream out2s = new PrintStream(connessione.getOutputStream());
    
            //try icon
            // Bla bla bla
            //fine try icon
            //preparazione per operazioni di lettura da smartcard
            try {
                while (c.waitForCardPresent(0)) {
    
                   //lettura da smartcard
                   
                    try{
                        long now_name = System.currentTimeMillis();
                        fout = new FileOutputStream ("letture/anagrafica_"+now_name+".txt");
                        for (n = 0; n < read1.length; n++) {
                            new PrintStream(fout).print((char)read1[n]);
                            String s1 = Character.toString((char)read1[n]);
                            lettura = lettura.concat(s1);
                        }
                        fout.close();
                    }catch (IOException e){
                        System.err.println ("Unable to write to file");
                        System.exit(-1);
                    }
    
                    out2s.println(lettura);
               }//while
            }// try
            catch (CardException e) {
                System.out.println("Error isCardPresent()" + e.toString());
            }
        }
    }

    Grazie!

  6. #6
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Ma se è l'applet ad essere in ascolto dei dati provenienti dall'applicazione... perchè utilizzi una ServerSocket in "Main" e un Socket in "test"?

  7. #7
    ehmm non lo so.. mi documento meglio sui socket :P se non capisco chiedo.. Grazie ^_^

  8. #8
    ricerche vane.. cosa dovrei utilizzare?

  9. #9
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Non dicevo di utilizzare altro

    Dicevo che dovrebbero essere scambiate di posto: una ServerSocket è fatta per aspettare una connessione, un Socket per eseguirla

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.