При отправке байтового массива в сокет UDP, пусть первый байт будет длиной строки, которую вы отправляете.Недостатком является то, что вы можете отправить только от 0 до 255 байтов.Я не знаю о Java, но вы можете получить младшие 8 битов длины и отправить в качестве первого байта, а старшие 8 битов в качестве второго байта, тогда вы можете отправить от 0 до 65535 байтов.
Другая программа, которая читает из сокета UDP, конечно, должна прочитать первые один или два байта и построить из них целое число.Затем он знает длину и может прочитать точное количество байтов.