Ciao a tutti.
Ho creato una applet che riceve dei pacchetti in codice binario, vi incollo il corpo centrale:

codice:
class client implements ActionListener {
public void actionPerformed(ActionEvent e1) {
try {
        String source = null;
        PacketSource reader;


        if (source == null) {
  	  reader = BuildSource.makePacketSource();
        }
        else {
  	  reader = BuildSource.makePacketSource(source);
        }
	if (reader == null) {
	    System.err.println("Invalid packet source (check your MOTECOM environment variable)");
	    System.exit(2);
	}
          //Connessione al flusso di dati
	  reader.open(PrintStreamMessenger.err);
	  for (;;) {                                             //Ciclo infinito che mi blocca la applet 
	    byte[] packet = reader.readPacket();
            int i=0;
            jTextArea1.append("Server:"+hexString(packet)+" \n");  // stampa sulla jTextArea
	    Dump.printPacket(System.out, packet);//stampa sul terminale il flusso di dati

	    System.out.println();
	    System.out.flush();
	  }

}
catch(Exception e) {
System.out.print("Whoops! It didn't work! \n");
e.printStackTrace();
  }
 }
}
Il mio problema è che quando premo il tasto connetti la applet si collega ed il bottone(connetti) rimane premuto fino a quando non interrompo il flusso di dati dall'altro programma da cui riceve i pacchetti.
Inoltre i dati non vengono stampati sulla jTextArea1 sempre se prima non ho interrotto la comunicazione dall'altro programma.
Come potete vedere uso un ciclo infinito: for(;
Forse devo cambiarlo con qualcosa di più idoneo...

Vi ringrazio anticipatamente dell'aiuto.