草庐IT

protobuf-LiteralByteString

全部标签

objective-c - Protobuf 与二进制 plist 在 iOS 游戏中的网络交易

我正在为iOS开发实验性多人roguelike。玩家将通过GameKitAPI连接,他们将被放置在一个地牢中。玩家可以执行各种Action,所以我想让一个设备成为主机,并实现某种RPC来发送/接收这些Action(以及游戏开始时相当复杂的地牢状态)我需要一些紧凑且快速的序列化。我在protobuf和二进制plist之间进行选择。二进制plist看起来很容易用于objc对象序列化/反序列化(这很重要,因为它是实验性的非商业项目),但它看起来效率低下。Protobuf看起来很高效,但完全陌生。还有其他选择吗?编辑:刚找到http://msgpack.org/.看起来像一条路要走

objective-c - Protobuf 与 JSON - Objective-C/iOS

在Objective-C中,制作iOS应用程序时,关于序列化的最佳方式是什么?Protobuf还是JSON? 最佳答案 Protobuf更节省时间和空间,JSON可能更省力。只要没有前两者的原因(例如,因为要序列化的数据量小,序列化不是时间紧迫的),我会坚持使用JSON。这也让调试变得更有趣:-) 关于objective-c-Protobuf与JSON-Objective-C/iOS,我们在StackOverflow上找到一个类似的问题: https://st

c# - UWP/.NET Native 和 iOS 上的 Protobuf-net

我有一个基于.NETStandard1.4的Xamarin.Forms应用程序,它使用protobuf-net将对象存储在数据库中,这些对象稍后将被发送到WCF服务。在Android和UWP“托管”上,一切正常,但是-在搜索了无法再访问的存储库、文章和博客文章之后,以及在尝试让预编译工具工作但失败之后-我有一个简单(可能不是)问题:如何让protobuf-net在UWP/.NETNative和iOS/Xamarin等“受限”环境中工作? 最佳答案 目前我没有针对这种情况的完美解决方案。我知道有些人已经做到了,但我在UWP/Nativ

java - Java读取protobuf消息时出现异常

我现在使用protobuf已经有几个星期了,但是在用Java解析protobuf消息时我仍然不断遇到异常。我使用C++创建我的protobuf消息,并使用boostsockets将它们发送到Java客户端监听的服务器套接字。发送消息的C++代码是这样的:boost::asio::streambufb;std::ostreamos(&b);ZeroCopyOutputStream*raw_output=newOstreamOutputStream(&os);CodedOutputStream*coded_output=newCodedOutputStream(raw_output);co

C++ Linux Google Protobuf + boost::asio 无法解析

我正在尝试通过TCP通过boost::asio套接字发送GoogleProtobuf消息。我认识到TCP是一种流式传输协议(protocol),因此我在消息通过套接字之前对其执行长度前缀。我有代码工作,但它似乎只在某些时候工作,即使我重复相同的调用而不改变环境。有时我会收到以下错误:[libprotobufERRORgoogle/protobuf/message_lite.cc:123]Can'tparsemessageoftype"xxx"becauseitismissingrequiredfields:Name,ApplicationType,MessageType原因很容易理解,

java - 我可以在 protobuf 中定义一个常量字符串吗?

我使用protobuf的枚举在C++应用程序和Java应用程序之间共享值。这样,相同的(int)值在语言之间共享,并且这些值在编译时可用。我可以通过在通用.proto文件中以某种方式定义它来对字符串做类似的事情吗? 最佳答案 不是真的。您可以使用一些技巧。两者都不是很合适,并且(我认为)两者都将在proto3中消失:定义一个带有字符串字段的消息,并为其指定一个默认值,即您的常量值。但是,Protobuf3显然正在删除默认值。使用"customoptions",这可能应该被称为“注释”,因为它们很像Java或其他语言中的注释。您可以声

java - 如何确定 protobuf 中的消息类型以便我可以使用该 type.parsefrom(byte[ ])

我正在尝试将protobuf数据从cpp端发送到java端。我在.proto中定义了多种消息类型在Cpp端,我有每个消息类型的枚举,我将它添加到buf输出中,如下所示:uint8_t*__temp=(uint8_t*)(buf);*__temp++=(type)>>8;*__temp=(type)&0x00FF;如何获得我添加到buf中的“类型”,以便实现类似MessageTypeparseFrom(byte[]data); 最佳答案 目前尚不清楚确切的要求是什么。但我假设您正在尝试发送不同类型的消息,并且接收方应该能够从接收到的字

java - 在 Java 中将 json 转换为动态生成的 protobuf

给定以下json响应:{"id":"123456","name":"JohnDoe","email":"john.doe@example.com"}以及以下user.proto文件:messageUser{stringid=1;stringname=2;stringemail=3;}我希望有可能动态创建protobuf消息类(在运行时编译.proto),这样如果json响应通过字段"phone":"+1234567890"我可以只上传新版本的protobuf文件以包含stringphone=4并在protobuf响应中公开该字段,而无需重新启动服务。如果我要从帽子里提取这些类,我希望能

java - Protobuf 中的默认枚举值是多少?

你好与Java一起使用的GoogleProtocolBuffer中的默认枚举值是多少(如果未定义任何默认值)? 最佳答案 它是第一个定义在.proto顺序中的。来自.proto语言指南(因为所有实现在这里都使用相同的逻辑):OptionalFieldsAndDefaultValues(snip)Forenums,thedefaultvalueisthefirstvaluelistedintheenum'stypedefinition. 关于java-Protobuf中的默认枚举值是多少?

java - 检查 protobuf 消息 - 如何按名称获取字段值?

我似乎无法在不显式调用其getter的情况下找到验证protobuf消息中字段值的方法。我看到周围的示例利用Descriptors.FieldDescriptor实例到达消息映射内部,但它们要么基于迭代器,要么由字段编号驱动。一旦我有了map:MapallFields=myMsg.getAllFields();如何获取字段"fieldXyz"的值?我知道我可以使用myMsg.getFieldXyz(),但这不能以系统的方式使用。如果无法通过名称访问字段值,我想知道这种选择背后的基本原理是什么。我可能还需要了解protobuf的“哲学”:-) 最佳答案