Зачем вам читать 1024 байта?Прочитайте 5 байтов, повторяя чтение, если необходимо, до тех пор, пока вы на самом деле не получите 5 байтов (или ошибку).Затем вы узнаете, как долго это сообщение: так многократно читайте, пока не получите все данные для сообщения.(Конечно, при каждом вызове вы запрашиваете столько данных, сколько вам действительно нужно - поэтому, если при чтении заголовка вы сначала читаете 2 байта, то при следующем вызове запрашиваете 3 байта, то есть остаток заголовка.)
Чтение большего, чем вам нужно, просто требует сложности - это означает, что вы должны запомнить эти данные где-то для следующего чтения.