Uso una variabile pubblica, ma non statica. L'utilizzo di quella variabile va bene, non è lì il problema perché il programma per il resto funziona perfettamente.Originariamente inviato da valia
Ti consiglio, per i Thread, di implementare Runnable anziché utilizzare proprio una classe derivata da Thread: extends Thread si usa quando si vuole essere sicuri che la classe non estenda altre classi, se è questo il comportamento voluto allora ok. Se ti interessa invece poter derivare (o non escludere a priori questa opzione) usa implements Runnable.
Suppongo che usi o variabili statiche o variabili non private violando le regole di encapsulation e me ne accorgo da qui
codice:disconnetti = client.terminaChiamata;
Il valore lo deduco ogni volta dal client perché ad ogni cliclo del while aggiorno il mio valore con il valore presente nel client.che poi non so che senso abbia visto che cmq mantieni un riferimento a client e potresti dedurre il valore ogni volta dal client (più corretto per evitare casini di mancato aggiornamento).
E' tutto istanziato e connesso naturalmente, ma non potevo postare 20 pagine di codice. Gli altri messaggi viaggiano senza problemi, il mio unico problema è quella read.A parte che da qui non si sa se stato è stato inizializzato oppure no (so che esiste la variabile, ma dove la inizializzi? dove apri la connessione al server?).codice:in = new BufferedReader(new InputStreamReader(stato.getInputStream())); esito = in.readLine(); //ECCO, E' QUI AD ASPETTARE UNA EVENTUALE DISCONNESSIONE DEL CLIENT E NON SI ACCORGE DELLA PROPRIA
Usando socket e in particolare questa istruzione, tu apri uno stream in lettura "agganciandoti" (passatemi il termine) all'input stream del socket.
Ora non so dove lo istanzi/usi, ma se non hai un server remoto a cui ti colleghi tramite socket e da cui invii il comando quit dubito che funzioni.
Ci sarebbero altre note poco chiare su quello che fa il codice, ma per adesso sorvoliamo
Qui il thread aspetta che dall'altro lato il client gli dica se si è disconnesso o meno (se ricevo un evento "chiudi" invio un messaggio quit e poi chiudo) e non si accorge se la propria gui intanto ha aggiornato il valore "disconnetti", perché naturalmente si deve chiudere in entrambi i casi.Infine di cosa non si accorge? Mica tu dal client puoi scrivere quit e lo ricevi tramite socket!!!