Originariamente inviato da menostress
Come faccio a riunire i 4 campi scritti sopra tutti nel Data di un pacchetto UDP facendo in modo che poi in ricezione io possa nuovamente discriminarli?
Ecco una possibilità:
codice:
ByteArrayOutputStream baos = new ByteArrayOutputStream ();
DataOutputStream dos = new DataOutputStream (baos);

byte[] addr = dest_ip.getAddress ();

dos.write (addr, 0, addr.length);
dos.writeInt (port);
dos.writeInt (channel);
dos.write (data, 0, data.length);

byte[] packet = baos.toByteArray ();
Occhio solo ad una cosa: lo stream di dati generato dal DataOutputStream contiene i dati senza alcun "tag", cioè senza alcuna marcatura di cosa/quanti siano i byte!
Vuol dire che in packet avrai: 4 byte (se dest_ip è IPv4) + 1 intero (4 byte) + 1 intero (4 byte) + N byte.
Questo devi saperlo tu!! E in lettura dovrai fare le read in modo da prendere gli stessi tipi di dati.