Let's say I have a serializable class AppMessage
.
I would like to transmit it as byte[]
over sockets to another machine where it is rebuilt from the bytes received.
How could I achieve this?
Prepare the byte array to send:
static byte[] serialize(final Object obj) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try (ObjectOutputStream out = new ObjectOutputStream(bos)) {
out.writeObject(obj);
out.flush();
return bos.toByteArray();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
Create an object from a byte array:
static Object deserialize(byte[] bytes) {
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
try (ObjectInput in = new ObjectInputStream(bis)) {
return in.readObject();
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}