Ciao a tutti.
Ho questa parte del mio server che manda i messaggi ai client:
codice:
public void run()
  {
   try
   {
    // Ricava lo stream di output associate al socket
    // e definisce una classe wrapper di tipo
    // BufferedWriter per semplificare le operazioni
    // di scrittura
   
    OutputStream s1out = cliente.getOutputStream();
    BufferedWriter bw = new BufferedWriter(
     new OutputStreamWriter(s1out));
    int num=1;
    // Il server invia la risposta al client
    
    inattivo=false;
    System.out.print("packet: "+hexString(packet));

    while(true){
    if(available == false){  // serve per vedere se sono stati scritti i packet che poi mando al client
    bw.write(hexString(packet)+"\n");
    num++;
    available=true;  
      }
    }
     //Chiude lo stream di output e la connessione
    
     bw.close();
    inattivo=true;
        
    System.out.println("Chiusura connessione effettuata");
   }
   catch (IOException ex)
   {
    ex.printStackTrace();
   }
   catch (Exception e)
   {
    e.printStackTrace();
   }
  }
 }
Come vedete i messaggi sono in un ciclo infinito: while(true).
Il mio problema sussiste quando eseguo questo server dentro una applet che contiene altri threads.
Se faccio girare solo il server ed il client, i messaggi vengono mandati e ricevuti in tempo reale.
Se metto il server nella mia applet e ci collego il client, i messaggi arrivano solo dopo che viene eseguito il comando bw.close(), cioè chiudo il buffer di scrittura.

Come mai succede questo?