【发布时间】:2016-03-31 15:36:15
【问题描述】:
我在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 或其他库。
我也愿意接受诸如“将你的包对象转换为 JSON 并发送它。然后反序列化你的 JSON 并填充一个名为包的 c++ 对象”之类的建议。
【问题讨论】:
标签: c# c++ serialization udp