Вы либо хотите, чтобы протокол был самодействующим (как, например, XML, - вы знаете, когда вы закончили получать документ XML, когда он закрывает корневой элемент) или вам нужно задать префикс длины данных, или вам нужен другой конец, чтобы закрыть поток, когда это будет сделано.
В случае протокола с автоматическим завершением вам нужно иметь достаточно хуков, чтобы код чтения мог определить, когда он закончится. С двоичной сериализацией у вас может не хватить хуков. Префикс длины - безусловно, самое простое решение здесь.