1

我有三个应用程序。1. MFC(创建命名管道并读取、写入命名管道) 2. 服务(读取或写入命名管道) 3. WPF 应用程序将数据发送到服务以写入命名管道。

流程是这样的。首先,MFC 应用程序创建命名管道,然后服务创建命名管道客户端以读取和写入管道。WPF 应用程序使用服务并将要写入的数据发送到命名管道。

现在有人可以告诉我如何将 ac# 对象(可能是序列化)写入命名管道。那么我如何通过读回写入命名管道的 c# 对象来创建 C++ 对象。反之亦然(将 c++ 对象写入命名管道,然后在服务中我想从命名管道创建 c# 对象)

4

1 回答 1

1

命名管道是一种“低级”传输,它没有定义您应该/可以如何序列化/反序列化数据(它只是传输普通的“数据块”,如字节 [] 或字符串)

可能您正在寻找的是一个序列化库,它允许您在 C# 中序列化一个对象并在 C++ 中反序列化它,反之亦然。

这是相关的问题: Serialize in C++ then deserialize in C#?

所以它可以这样:你在 C# 中将你的对象序列化为一个字节数组/字符串,然后将该数组/字符串写入一个命名管道;然后从 C++ 应用程序中的命名管道中读取序列化的数据块,并将其反序列化为 C++ 对象。反之亦然。

上面的帖子推荐了用于序列化/反序列化的 google Protocol Buffers库。

于 2013-11-17T15:26:48.060 回答