Quindi, non sarebbe meglio realizzare una classe (chiamata, ad esempio, Messaggio), che contenga tutti i byte e utilizzare un ObjectInputStream per leggere dalla socket un oggetto di questo tipo? In questo modo non ci sono problemi di letture consecutive e tutti i dati possono essere incapsulati in un unico oggetto. Ad esempio, con questa classe:
codice:
public class Messaggio implements Serializable {
private byte[] dati;
public Messaggio(byte [] dati) {
this.dati = dati;
}
public byte[] getDati() { return dati; }
}
si può scrivere qualcosa del genere:
codice:
// Da parte di chi riceve:
ObjectInputStream ois = new ObjectInputStream( socket.getInputStream() );
Messaggio msg = (Messaggio) ois.readObject() // Qui leggo tutto il messaggio
byte [] datiRicevuti = msg.getDati();
// Da parte di chi invia:
ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream() );
byte [] daInviare = ...;
Messaggio msg = new Messaggio( daInviare );
oos.writeObject( msg );
A me sembra più semplice e facile da gestire questa struttura...
Ciao.