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.