问题标签 [msgpack]

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 回答
1113 浏览

python - How to use msgpack instead of pickle for logging SocketHandler in Python?

The Logging Cookbook describes a method for using Python logging functionality with remote log server.

Unfortunately, this implementation requires exposing of the server, which process the received data with unPickle function, which is a severe security risk.

I'd like to use the msgpack library to pass the logging message instead of the pickle module. Is there any ready to use solution based on logging and msgpack available? Are there any special precautions to consider, when implementing it myself?

Update I have managed to modify the original example from the Logging Cookbook, and obtained something which seems to work.

The log server:

Sample client:

0 投票
1 回答
386 浏览

rpc - 使用 Message Pack RPC 将 Object 类传递给服务器方法

我想从客户端调用服务器中的一个方法,并且我想将一个参数传递给该方法,该参数是我编写的一个类。如何使用 MsgPack RPC 执行此操作。我知道如何将 int 传递给向量或字符串。

0 投票
0 回答
1129 浏览

java - MessagePack 和 Subclasses 反序列化

我正在玩 MessagePack 和 Java。在序列化工具方面,我过去曾使用过 Protobuf 和 Json(使用 Jackson 和 Gson)。

当涉及到正常的序列化和反序列化时,我完全没有问题。当我想拥有另一个类的多个子类时,就会出现问题。

我正在使用以下代码对此进行测试:

TestMessage.TestMessageSubClass sub = new TestMessage.TestMessageSubClass(); 字节[] 包 = MsgPack.pack(sub); Assert.assertTrue(ArrayUtils.isNotEmpty(pack));

这两行失败是因为当我反序列化时,我只得到一个普通的 TestMessage,而不是一个 TestMessageSubClass 实例。

我想这是因为默认情况下 MessagePack 解包器无法确定他需要反序列化的确切类。事实上,如果我直接要求他反序列化为 TestMessageSubClass,这将工作得很好。

我的要求是 TestMessage 可能有任意数量的带有额外数据的子类,并且使用相同的代码我需要在正确的类实例中反序列化它们而不会丢失任何东西。我可能正在反序列化包含这些 TestMessage 实例的异构列表的流。

我可以使用 JacksonJson 中的@JsonSubTypes 注释来获得我想要的行为。

有没有办法使用官方的 MessagePack 客户端 API 并获得它?我自己有一个已知的模式吗?

这是我的 MsgPack 包装类的代码:GIST

也欢迎任何有关更有效地使用 MessagePack 的建议。

0 投票
1 回答
1348 浏览

c++ - 将 msgpack 解包到任意对象,无需 msgpack_define

我正在编写处理自定义 String 实现而不是 std::string 的代码体(长篇大论,但由于各种原因必须使用它),从这里开始我将其称为“String”。

我能够使用“原始”类型轻松打包字符串而不会出现问题来打包原始字符字节和大小,但我在解包时遇到问题。

我能够手动解压它,如下所示。

但我想使用内置的 >> 运算符或 .as 模板函数,但无法管理它。我无权修改 String 类以添加 msgpack_unpack 函数,也无权添加 MSGPACK_DEFINE

我尝试创建一个结构并给它一个 msgpack_unpack 函数,但显然它用我的编译器回复的 msgpack::object::implicit_type 调用它

然后我想不出任何从“implicit_type”对象中获取 msgpack::object 的方法。

有任何想法吗?

0 投票
1 回答
393 浏览

c - MessagePack 解包失败,C 中通过 Libcurl 接收到大型 Metasploit Framework 消息

首先,我使用了如何使用 msgpack-c 正确解包和提取数据?弄清楚如何正确解包数据,因为 MessagePack 自己的 C API 文档不是很好。不过,http ://wiki.msgpack.org/display/MSGPACK/QuickStart+for+C+Language 也可以。

我想指出,对于大多数对 metasploit 的 API 调用来说,代码都可以正常工作,只有大的(module.exploits大约 16KB 返回)失败了。

就像我的最后一个问题一样,我在工作,所以无法发布实际代码。我将尝试在下面的代码片段中准确地展示我的代码在做什么。

我知道上面有内存泄漏,我不想输入所有正确的销毁/释放,因为这只是一个例子。我省略了AUTH_TOKEN实际抓取方式的部分,因为它不应该是错误,因为我在代码中没有问题。我也知道一些 curl 请求代码可以优化为函数。

重要的一点是,ruby gem 可以很好地与这个相同的 API 调用一起工作,但它是一个 C 扩展,不使用标准的 msgpack 库,而是自己进行二进制解析。

当我将返回的原始数据写入文件而不是字符串缓冲区时,手动检查它表明它似乎是正确的 msgpack 格式。

任何想法这里出了什么问题?我将开始使用 gdb 来尝试追踪问题,同时考虑将 ruby​​ c 扩展转换为我可以使用的库,因为它似乎可以使用。但希望它很简单,你们中的一个人会抓住它!

0 投票
1 回答
1745 浏览

c# - 在 MessagePack 中将具有接口作为属性类型的对象序列化

我正在尝试使用 MessagePack 序列化具有接口类型属性的对象。当我调用时Pack,它会抛出SerializationException说没有为接口定义序列化程序。

代码示例:

我可以告诉 MessagePack 为 IDummyInterface 使用哪个序列化程序并告诉它充当 DummyObject 吗?

0 投票
1 回答
1563 浏览

c - msgpack在C中打包char数组

如何使用 msgpack_pack_raw 和 msgpack_pack_raw_body 发送一个 unsigned char 数组,更重要的是,如何检索(解包)它?我所做的如下:

在接收器部分我有:

但是在执行“int length = (*p).via.raw.size;”时会引发段错误。

知道为什么吗?

0 投票
1 回答
1346 浏览

python - MsgPack在python中打包超过32个字符的字符串值

我正在使用 MessagePack 开发客户端 SDK。当我的服务器在 java 中时,我需要在 java、ObjC 和 python 中开发客户端。我对 java 和 ObjC msgpack 库没有任何问题,但是在 python 中,当我打包一个字符串值超过 31 个字符的字典时,打包的数据不会以其他语言解包。尝试在 python 中解压同样的工作很好,只要字符串长度小于 32,互操作性也很好。下面是一个失败的python示例..

为此生成的二进制数据是

而如果我在 ObjC 中隐藏具有相同键值的字典,我会得到

ObjC 结果解包很好,python 不会..您可以注意到来自 ObjC 的数据中的 2 个额外字节。

一个正常工作的例子如下

这里的字符数= 30..我在python中得到以下字节

对于 ObjC,我得到以下字节..

如果我错过了一些明显的东西,我很抱歉.. 寻找任何解决方法或建议,因为我被打击了超过一天..

提前致谢。

0 投票
1 回答
1217 浏览

c++ - MessagePack C++ 和库类

由此看来您可以序列化自己的结构似乎很清楚。我需要从外部(c 语言)库中序列化结构。您如何将 msgpack 与您无法更改的结构/类一起使用?

有点像这样,只是我想做的一个概念:

更清楚地说,我需要避免的错误/usr/include/msgpack/object.hpp:218:4: error: no member named 'msgpack_pack' in 'Foo'来自链接器。

注意:如果无法在 c++ 中将 msgpack 与第三方(而非标准库)类和结构一起使用,我需要找到可以处理的序列化解决方案。而且,如果必须为要序列化的每个第三方类编写全面的包装器,我认为这是不可能的。一个让我需要将代码与其他上游更改同步的库只是使用它对我没有帮助。

0 投票
1 回答
1092 浏览

c# - 在 C# 应用程序中使用 MsgPack 自定义序列化程序

我在 C# 中使用 MsgPack 自定义序列化程序时遇到困难。说,我有以下课程:

我正在为 A 类编写自定义反序列化器。所以我的方法如下所示:

原始类型一切正常,但是如何从解包器中提取 B 类的实例?Wiki 文档很差,Internet 上关于 MessagePack C# 实现的信息也不多。任何帮助或建议将不胜感激。