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!