问题标签 [protobuf-c]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
126 浏览

schema - avro 和 protobufs 中的模式设计

目前我们存储的很多数据都是以 avro 记录或序列化 protobuf 字节的形式存储的。我想看看如何为我的数据设计一个有效的模式,以提高数据管道的读取/解析序列化速度。

例如考虑以下情况

在我当前的设置中,我有多个管道以格式模式 A 读取数 TB 的数据,然后根据 eventType 过滤掉大量数据。一些 eventType 非常罕见,因此即使很少见,它们仍然必须读取 TB 的数据,然后过滤掉其中的大部分即使模式 B 看起来更丑,但是因为我知道在给定管道中为给定的偶数类型读取哪个特定列我可以在 avro 或 proto 中创建投影模式(即只有我想要读取/反序列化的字段),然后解析器将忽略未知列,并且与模式 A 相比,读取和反序列化的数据要少得多。所以管道处理一个罕见的事件读取的数据要少得多,而不是 TB,尽管我同意我的代码将 eventtypes 映射到 schema 和 columnnames 会稍微难看。

那么,鉴于我的用例,与窄表和长表相比,我是否应该考虑更喜欢宽列模式?还是我在做一些反设计模式。我知道列式存储会更好,但是因为我的事件都是记录格式,所以我缺少什么明显的缺点吗?

0 投票
1 回答
256 浏览

python - TensorFlow 从源代码构建,不能包含贡献

我正在从源代码构建 TF,并且在 python 中包含 contrib 没有问题。当我尝试访问此模块时出现段错误,并出现以下错误:

看起来问题与 protobuf 相关,但这很难诊断。

0 投票
1 回答
1178 浏览

python - 用于解析包含数组格式的 protobuf 数据的二进制文件的 Python API

我在解析包含数组格式的 protobuf 数据的二进制文件时遇到问题。

当我使用 python API 时,ParseFromString 输出始终为零或无。

二进制文件中的序列化protobuf数据是使用 C++ API 生成的,SerializeToArray. 但是要解析bin文件,我想用python来解析。但是在 python 中,我找不到任何 API 来将序列化protobuf数据解析为二进制文件中的数组。

是否有任何 python API 可以解决此问题?任何人都可以为此提出解决方案吗?

0 投票
1 回答
766 浏览

client-server - 如何知道从服务器传入的 protobuf 消息的大小?

我有一个服务器客户端应用程序。服务器使用 C++,而客户端使用 C#。当客户端在 Windows 中时,服务器可能在 Linux 实例上运行。因此,我们不能对架构和字节序做出任何假设。我正在使用 protobuf 来回发送数据结构。目前采用的策略是发送一条消息作为头,其中包含下一条消息的大小,这是一个大数据结构。看起来像:

有没有办法知道protobuf将在两端发送多少字节,即上述结构将被序列化为多少字节?

0 投票
1 回答
583 浏览

protocol-buffers - 枚举值 0x88000000 的 protoc 编译器错误超出范围

在 proto 文件中,我有一个枚举,就像我正在转换它一样 c++ 代码它抛出错误 Integer out of range for field(_G,_P,_L) 。在https://developers.google.com/protocol-buffers/docs/proto3#enum 中说“枚举器常量必须在 32 位整数的范围内”。请帮我解决这个问题

枚举字段是

0 投票
2 回答
2249 浏览

protocol-buffers - 使用 proto3 编译器编译 proto2 语法文件

我有一个用 proto2 语法编写的 proto 文件。我正在使用 proto3 编译器编译这个 proto 文件。虽然它构建成功,但它在运行时显示以下错误。有人可以帮帮我吗。

[libprotobuf FATAL google/protobuf/extension_set.cc:102] 类型“xyza”的多个扩展注册,字段编号 200。在抛出“google::protobuf::FatalException”实例后调用终止 what():多个扩展注册键入“xyza”,字段编号 200。

0 投票
2 回答
94 浏览

ocaml - 告诉 omake 使用静态版本的 ac 库

我正在使用 omake 构建本机二进制可执行文件。链接后我尝试运行它,它无法运行并出现以下错误:

加载共享库时出错:libprotobuf-c.so.1:无法打开共享对象文件:没有这样的文件或目录

有没有办法在编译时告诉可执行文件选择静态版本:libprotobuf-ca 而不是 shared on?

0 投票
2 回答
394 浏览

protocol-buffers - 如何停止使用 protobuf3 打印错误消息“无法解析类型的消息,因为它缺少必填字段”

我只想在记录某些内容时从字符串中解析一个实例,而不关心结果。

但是当我将 protobuf 更新到 3.5.0 时,烦人的消息总是打印到终端(stderr):

“无法解析类型的消息,因为它缺少必填字段”</p>

它的字段必须是必需的。

如何停止打印错误消息?

0 投票
0 回答
147 浏览

c - 由于 PROTOBUF 服务器中的字符串数据类型变量和客户端通过 c 中 recv 端的套接字通信而出现段错误

我是 protobuf 的新手

当我通过 recv 端的套接字通信发送 protobuf 变量时,我试图显示 protobuf 的字符串变量,我在这个剩余的数据类型中得到了分段,而不是字符串,它们工作正常,但字符串变量的情况下我得到分段我怎么能过来在 Protobuf 字符串数据类型分段错误中,除了我们有任何其他数据类型用于存储字符串数据类型。

我用字符串变量名创建了一个 proto_socket.proto 我正在用 protoc compiler() 编译 proto_socket.proto它创建两个文件protoc proto_socket.proto --c_out <path>两个文件proto_socket.pb-c.hproto_socket.pb-c.c通过使用这些文件,我创建了一个proto_server.cproto_client.c. 并编译它。但是在两个程序运行时,我在 recv 端发送了一个 protobuf 变量,由于试图显示字符串变量,它给出了分段错误。

proto_socket.proto

为 .proto 生成的结构

proto_client.c

proto_server.c

结果,

0 投票
0 回答
528 浏览

sockets - 如何在服务器端读取和解压缩 protobuf c 打包消息(使用套接字)

我在 protobuf-c 中是全新的
我正在尝试创建一个套接字连接并使用 c 语言通过套接字发送 protobuf 打包消息
我将消息打包在客户端代码中并将其发送到服务器。但是服务器未能接收到打包数据并将其解包
我的客户端代码是

客户端.c

我的服务器代码是

服务器.c

如果我的包装是正确的,我该如何在服务器端打开它。如果有人知道这个答案,请帮我解决它。谢谢