protobuf 是否可以防止部分读取?

问题描述 投票:0回答:1

json 的一个巧妙特性是可以防止部分读取。

如果客户端发送如下 json:

[ {"someProperty": 1, "otherProperty": 2}, {"someProperty": 2, "otherProperty": 3}]

无论出于何种原因,连接中途关闭,我只收到

[ {"someProperty": 1, "otherProperty": 2}

我知道我会遇到 json 解码异常并且永远不会处理该有效负载。

protobuf 会发生部分读取吗?

意思是,我有一些字节数组,这样

a[0: n]
n != len(a)
在同一模型中有效,但显然缺少数据?

protocol-buffers
1个回答
0
投票

不,它不会阻止部分读取。

Protobuf 不是自我终止的,并且它是“主动意图”追加 === 合并(即以后的更改/添加只是扩展现有的有效负载)。 如果你幸运的话它会在字段中间中断,通常会通过某种“EOF”失败结果/异常来检测到;如果你不幸,它会在字段边界处完全破裂,并且不会被检测到 - 它只会处理看到的字段。 基本上:protobuf 需要手动成帧或其他外部完整性检查。

© www.soinside.com 2019 - 2024. All rights reserved.