C ++类通过UDP在C#中使用,有哪些选择?

时间:2017-09-05 10:07:37

标签: c# c++ udp unmanaged managed

我通过UDP从C / C ++应用程序接收数据。这个应用程序正在将类的memcpy放入缓冲区并按照我们的方式抛出它。我们的应用程序是用C#编写的,我需要以某种方式理解数据。我们可以访问结构的头文件 - 一切基本上都是结构或枚举。我们无法更改数据的格式,并且头文件可能会经常更改。

我考虑过用C ++重写我们的comms类来接收数据,然后我对它的序列化有了更多的控制权,但这需要很长时间,而且我的C ++生锈了,更不用说我没有了很多C ++线程的经验都是必需的。

我还创建了一些原型C ++库,其中提供的头文件可以通过C#访问,但是我无法理解我是如何在C#本身中实际创建和使用该类的实际实例的。我看一下这个,我看到的只是外部函数调用,而不是使用外部类型。)

我也研究过编组。但是,由于数据可能会经常发生变化,我认为这是最后的手段,并且非常谨慎。

是否有人知道任何选项或对此事有任何更有针对性的阅读或建议?

1 个答案:

答案 0 :(得分:0)

为什么不在每一端使用Google Protocol Buffers,即c ++和c#。您将采用您的c ++定义,让PB为您完成所有序列化。

  

协议缓冲区是Google的语言中立,平台中立,可扩展的机制,用于序列化结构化数据 - 想想XML,但更小,更快,更简单。您可以定义数据的结构化结构,然后使用特殊生成的源代码轻松地将结构化数据写入和读取各种数据流,并使用各种语言。 more...

它适用于不同的操作系统,即使原始类型的会话通常会成为问题。