Это помогло бы, если бы вы связали потоки, о которых вы говорите.
Но в общем, да, вам нужно удалить префикс длины перед декодированием с помощью protoc.Не существует стандарта о том, как префиксировать длину к сообщениям protobuf, некоторые используют префикс fixed32
, а другие varint
, некоторые имеют более длинный заголовок.Таким образом, инструмент protoc
не может разобрать заголовок длины.
И я не видел ни одного случая, когда protoc --decode
не декодировал бы действительное сообщение.Но он очень мало допускает ошибки, такие как усеченные данные - он всегда отклоняет все сообщение, даже если повреждено только одно поле.
Для лучшей отладки вы можете использовать, например, этот инструмент, который декодирует побайтовои показывает первую ошибку, которая возникает: https://protogen.marcgravell.com/decode