View Single Post
Old 18-08-2009, 16:39   #1
Nexus 6
Senior Member
 
Iscritto dal: Sep 2006
Città: Catanzaro
Messaggi: 976
[JAVA] chat per progetto, problemone

Sto facendo un progetto per un esame. E' una semplicissima chat unicast. Il programma ha dentro un ServerSocket e un Socket:

Programma 1 Programma 2

ServerSocket <- socket
Socket -> ServerSocket

Una volta che si collegano, il thread ServerSocket possiede:
//riporto il codice sintentizzato senza try e cose varie
...

while(true){

while(! buffer.isReady){ // finchè il buffer (sarebbe un bufferedReader del socket che mi invia la stringa, quindi l'altra chat) non è pronto per essere letto, addormento il thread.
Thread.sleep(n*100);...

}
//se il buffer è pronto
ClassePerLaGUI.add(buffer.readLine); //in pratica è una classe statica che appende la stringa ricevuta al textfield (<-statico)
}


così mi trasmetto le stringe. E fino a qui funziona tutto. Per aggiungerci qualcosina in più ho creato l'oggetto Profilo (nick, messaggio, Image Avatar), come msn più o meno. Quindi se io aggiorno il mio profilo(tutto, avatar compreso) appena clicco applica modifica al profilo, devo mandare l'oggetto Profilo al destinatario e l'ho fatto.

Il problema è il thread del server! Come diavolo dovrei fare? Perchè con il bufferedReder non ha metodi che mi restituisce gli oggetti, ha solo alcuni read che restituiscono int, String e un booleano. Avevo pensato di creare un ObjectInputStream(socket.getInputStream), questo mi funziona come voglio, ossia mi restituisce l'object (che castizzo a Profilo) ma non è un Buffer e cosa più stupida, utilizza lo stesso socket.getInputStream() che utilizza il buffer, quindi mi succede un macello.

Come potrei fare? Io devo usare sempre il buffer giusto? Ma non ha un metodo di ritorno Object? Come posso risolvere questa cosa?

Se volete vi posto i metodi importanti.

Ultima modifica di Nexus 6 : 18-08-2009 alle 20:28.
Nexus 6 è offline   Rispondi citando il messaggio o parte di esso