Вам необходимо сериализовать ваш класс сообщений в байтовый массив.Это будет байтовый массив, который вы отправляете (и в этот момент будет легко получить размер).
На клиенте вы захотите десериализовать байтовый массив обратно в объект Message.
Java предоставляет набор классов для обработки сериализации / десериализации, и объект, который вы хотите сериализовать, должен реализовывать интерфейс «Сериализуемый».
Примерно так будет работать:
// Serialize to a byte array
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
ObjectOutput oo = new ObjectOutputStream(bStream);
oo.writeObject(messageClass);
oo.close();
byte[] serializedMessage = bStream.toByteArray();
И на принимающей стороне:
ObjectInputStream iStream = new ObjectInputStream(new ByteArrayInputStream(recBytes));
Message messageClass = (Message) iStream.readObject();
iStream.close();
Обратите внимание, вы должны создать общий интерфейс, который будет использоваться совместно клиентом и сервером, что позволит легко сериализовать / десериализовать полезную нагрузку.