Protocol buffers gRPC服务器抱怨消息在';不是

Protocol buffers gRPC服务器抱怨消息在';不是,protocol-buffers,grpc,Protocol Buffers,Grpc,我正在向gRPC服务器发送一个手工创建的HTTP2请求(使用nghttp2),但没有按预期处理 我在服务器的200 OK响应中收到此错误消息: 标题:grpc状态:8 标题:grpc消息:grpc:收到的消息大于最大值(3389524482对4194304) 我相当确定我发送的请求低于4MB,更不用说3GB了 我尝试过使用protobuf模式生成的gRPC客户机/存根,这似乎很有效 我将客户端发送的请求帧与我自己构建的请求帧进行了比较,所有内容似乎都是一样的 对于这种类型的错误,我是否应该关注一

我正在向gRPC服务器发送一个手工创建的HTTP2请求(使用nghttp2),但没有按预期处理

我在服务器的200 OK响应中收到此错误消息:

标题:grpc状态:8

标题:grpc消息:grpc:收到的消息大于最大值(3389524482对4194304)

我相当确定我发送的请求低于4MB,更不用说3GB了

我尝试过使用protobuf模式生成的gRPC客户机/存根,这似乎很有效

我将客户端发送的请求帧与我自己构建的请求帧进行了比较,所有内容似乎都是一样的


对于这种类型的错误,我是否应该关注一个特定的框架?(代码是专有的,所以我不会发布。)

如果您非常确定您的消息不超过4 GB,那么这可能意味着您没有正确设置长度前缀消息的格式。标头为5字节长,采用大端字节。Wireshark告诉我gRPC消息格式不正确。这就是确切的消息:“格式错误的消息数据:只剩下1131字节,至少需要3389524477字节”。1131是数据帧中长度头的值,表示消息的实际大小。这是否意味着以长度为前缀的消息头是正确的?如果是这样,那么3389524477字节从哪里来?Wireshark看到的与gRPC看到的基本相同:一条大小应该为3389524477字节的消息。1131字节是流中剩余的字节数。这与我的说法非常一致,即
长度前缀消息
编码错误。你是对的。编码期间未设置表示
压缩标志
消息长度
字段的5个字节。我想当调用protobuf对象上的
SerializeAsString()
方法时,我希望它能为我完成,但事实并非如此。谢谢。这也可以表现为只剩下x个字节,至少需要5个字节。在wireshark中,如果您的负载很小。