我在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;
答案 0 :(得分:1)
你的问题是一样的,如何在两种语言之间序列化类型。
协议缓冲区是一种方式,这里是关于做什么between c++ and java的类似问题。虽然还有其他人在那里建议谷歌的PB。
但是,我最喜欢的以语言无关的方式序列化对象的方法是JSON。它很容易推理,可能是你可以实现的最快最干净的东西。所以除非你有任何明显的表现异议,否则我会先做到这一点。你好像已经知道怎么做了?