Ciao a tutti.
Ho questa parte del mio server che manda i messaggi ai client:
Come vedete i messaggi sono in un ciclo infinito: while(true).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(); } } }
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?

Rispondi quotando