Я думаю, что ваш вопрос относится не к Java, а к специфике обмена по TCP:
- в TCP нет сообщений, никаких - это поток, ... труба байт, куда в один конец втекает, а из другого вытекает ;-)
- поэтому для передачи сообщений вы должны их как-то сами форматировать
- наиболее широко используются 2 способа: а). передавать в потоке фиксированный ограничитель конца сообщения (так работают большинство протоколов Интернет), обычно это "\n\n" (пустая строка) и б). передача вначале длины, а затем байты тела сообщения (подобно POST в HTTP).
- иногда используют 2 этих способа вместе.