c ++通过UDP

时间:2015-12-25 18:56:53

标签: c# c++ serialization udp

我在c#中有一个应用程序,它通过UDP连接到另一个用c++编写的应用程序。我更倾向于使用高性能解决方案,因为我希望测量事件客户端,某些处理服务器端和处理完成后客户端响应之间的时间。基本上:往返延迟。

我在c#中有一个对象,例如:

public class Package{

    public Package(){}

    public float DeliveryTime = 1.5;
    public int NumberOfItems = 2

}

然后我将我的包序列化为字节数组:

Package package = new Package();
var serializedPackage = ObjectToByteArray(package);

接下来,我通过UDP发送我的serializedPackage(我知道,不保证交付或订单,但我不需要这些保证)。

client.Send(serializedPackage , serializedPackage .Length, ip);

我的c ++应用程序然后收到了UDP消息...... 问题是:

我现在如何将收到的字节数组转换回维护属性值的可用对象?

我需要反序列化到某个类的Package c ++端,然后使用属性...例如一些sudo代码:

DeserializedPackage deserializedPackage = someDeserializeFunction(bytes);
if(deserializedPackage.NumberOfItems > 0){
    cout << deserializedPackage.DeliveryTime;
}

我从哪里开始?这甚至可能吗?

我非常精通C#,但对c ++来说绝对是新手,所以请不要混用c和c ++。此外,我想要使用Boost或其他库。

我也欢迎提及诸如&#34;将您的包对象转换为JSON并发送它。然后反序列化您的JSON并填充一个名为package的c ++对象。&#34;

1 个答案:

答案 0 :(得分:1)

你的问题是一样的,如何在两种语言之间序列化类型。

协议缓冲区是一种方式,这里是关于做什么between c++ and java的类似问题。虽然还有其他人在那里建议谷歌的PB。

但是,我最喜欢的以语言无关的方式序列化对象的方法是JSON。它很容易推理,可能是你可以实现的最快最干净的东西。所以除非你有任何明显的表现异议,否则我会先做到这一点。你好像已经知道怎么做了?