Per inviare oggetti io faccio cosi:
codice:
byte[] buffer = new byte[500];
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp = new DatagramPacket( buffer, buffer.length, ia, port );
ByteArrayOutputStream baos = new ByteArrayOutputStream()
ObjectOutputStream output = new ObjectOutputStream( baos );
output.writeObject( myObj );
buffer = baos.toByteArray();
dp.setData( buffer );
dp.setLength( buffer.length );
ds.send(dp);
Per riceverli invece:
codice:
byte[] buffer = new byte[500];
DatagramSocket ds = new DatagramSocket(port);
DatagramPacket dp = new DatagramPacket( buffer, buffer.length );
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(dp.getData(),0,dp.getLength() );
ObjectInputStream input = new ObjectInputStream( bais );
MyClassObject obj1 = (MyClassObject) input.readObject();
Questo se gli oggetti li vuoi inviare con UDP, se invece utilizzi TCP devi prima ottenere lo stream con getInputStream() o l'output e poi gli attacchi il filtro ObjectInputStream , o output
Di sicuro ci sono modi migliori, ma cosi' va :-)
EDIT: leggendo la risposta sopra mi ero dimenticato appunto di dirlo, la classe che invii deve implementare Serializable