问题标签 [protocol-buffers]

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 投票
3 回答
13273 浏览

python - 如何使用 Python 和 Google 的协议缓冲区来反序列化通过 TCP 发送的数据

我正在尝试编写一个应用程序,该应用程序使用 Google 的协议缓冲区通过 TCP 连接反序列化数据(使用协议缓冲区从另一个应用程序发送)。问题是它看起来好像 Python 中的协议缓冲区只能反序列化字符串中的数据。由于 TCP 没有明确定义的消息边界,并且我尝试接收的消息之一具有重复字段,因此在最终传递要反序列化的字符串之前,我不知道要尝试和接收多少数据。

在 Python 中这样做有什么好的做法吗?

0 投票
3 回答
4538 浏览

serialization - 为什么不使用谷歌协议缓冲区的 lua 实现?lua 已经有更好的解决方案了吗?

为什么不使用谷歌协议缓冲区的 lua 实现?lua 已经有更好的解决方案了吗?

0 投票
1 回答
1615 浏览

logging - 带有协议缓冲区和高级节俭的抄写员?

我在这里有两个问题:

问题一:

-- thrift 可以提供内部类功能吗?(接下来看我的例子)

-- 如果可以,thrift 可以轻松使用这样的功能吗?

这是 scribe 接口 (scribe/if/scribe.thrift)。但是它的消息字段只能是字符串,我认为不够灵活。

如果我能做以下事情那就太好了(我什至不知道 thrift 本身是否根据其文档提供了内部类功能——但协议缓冲区肯定可以)。


问题2:

-- scribe 可以轻松地使用协议缓冲区作为内部数据表示吗?(没有过多的代码修改)

-- 如果上述问题的答案是“否”,Google 是否开源了它的 sribe 实现?

0 投票
1 回答
3100 浏览

protocol-buffers - 协议缓冲区消息中的集合?

在协议缓冲区中,有没有办法让消息包含嵌套消息的集合?例如,消息主管可能具有员工集合以及主管的姓名和部门。

0 投票
2 回答
4457 浏览

java - 是否可以模拟 Java 协议缓冲区消息?

协议缓冲区类被标记final,大概是为了提高效率;然而,这使得它们很难测试——Mockito不能模拟/监视最终类。我试过使用PowerMockito但没有成功:我在为考试ClassFormatError做准备时得到了一个。final

到目前为止,我的解决方案是创建可模拟的适配器接口,但我希望有一种不那么费力的方法。

0 投票
4 回答
11085 浏览

c++ - 协议缓冲区和 UTF-8

编码方案/多个操作系统和字节序的历史导致在编码所有形式的字符串数据(即所有字母)方面一团糟;出于这个原因,协议缓冲区仅处理其字符串类型中的 ASCII 或 UTF-8,而且我看不到任何接受 C++ wstring 的多态重载。那么问题是如何将 UTF-16 字符串放入协议缓冲区?

大概我需要将数据作为 wstring 保存在我的应用程序代码中,然后在将其填充(或从中提取)消息之前执行 UTF-8 转换。什么是最简单的 - Windows/Linux 可移植方式来做到这一点(来自受良好支持的库的单个函数调用会让我很开心)?

数据将来自各种 Web 服务器(Linux 和 Windows),最终将到达 SQL Server(可能还有其他端点)。

-- 编辑 1--

Mark Wilkins 的建议似乎符合要求,也许对库有经验的人可以发布一个代码片段——从 wstring 到 UTF-8——这样我就可以判断它有多容易。

-- 编辑 2 --

……的建议更是如此。我将进一步研究 boost 序列化。

0 投票
5 回答
6954 浏览

delphi - Delphi 协议缓冲区?

有谁知道在 Delphi 中执行 Google Protocol Buffers 的项目?

0 投票
4 回答
193 浏览

c - 服务器多线程,Protocol 必备?和更多

假设应用层协议是通过 UDP 实现的。需要客户端超时,因此服务器需要保持与之对话的每个客户端的状态。

也假设select被使用。

  1. 实现多线程服务器总是最好的吗?我认为链接列表也会这样做,其中 server timeout time=Earliest Timeout of a client- CurrentTime。链接列表将具有与保持客户端状态相同的功能,同时避免创建新线程的开销(尽管为服务器引入了一些复杂性来维护特定于客户端的超时)。

  2. 如果选择多线程,那么为新客户端调用新套接字是否最好?这将引入系统资源开销。但我认为默认服务器套接字(bind具有服务器众所周知的端口)会做同样的事情,因为它有缓冲区(嗯..对于可扩展的客户端数量来说可能不够长..)

谢谢!

0 投票
6 回答
9114 浏览

language-agnostic - 锯齿形解码

在 google protocol buffers encoding overview中,他们引入了一种称为“Zig Zag Encoding”的东西,它采用小幅度的有符号数字,并创建一系列小幅度的无符号数字。

例如

等等。他们为此提供的编码功能相当聪明,它是:

我了解它是如何工作的,但是,我终其一生都无法弄清楚如何将其反转并将其解码回有符号的 32 位整数

0 投票
1 回答
1610 浏览

c# - 协议缓冲区 c# (protobuf-net) Message::ByteSize

我正在寻找与 C++ API 等效的 protobuf-net,Message::ByteSize以找出以字节为单位的序列化消息长度。