我在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消息..。问题是:
现在如何将接收到的字节数组转换回维护属性值的可用对象?
我需要反序列化到某个类包c++端,然后使用属性.例如,一些sudo代码:
DeserializedPackage deserializedPackage = someDeserializeFunction(bytes);
if(deserializedPackage.NumberOfItems > 0){
cout << deserializedPackage.DeliveryTime;
}我从哪里开始?这有可能吗?
我对C#很熟悉,但对c++完全陌生,所以请不要混合c和c++。另外,我不希望使用Boost或其他库。
我也愿意接受一些建议,比如“将包对象转换为JSON并发送它,然后反序列化您的JSON并填充名为package的c++对象”。
发布于 2015-12-25 19:08:04
您的问题是相同的,如何在两种语言之间序列化类型。
协议缓冲区是一种方式,下面是一个类似的问题,关于如何做between c++ and java。谷歌的PBs是在那里推荐的,尽管还有其他的。
但是,我最喜欢的以语言无关的方式序列化对象的方法是JSON。这很容易推理,而且可能是你能实现的最快的清洁的东西。所以我先说,除非你有任何有证据证明的表现异议。你好像已经知道怎么做了?
https://stackoverflow.com/questions/34465523
复制相似问题