首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++反序列化通过UDP从c#应用程序发送的对象

c++反序列化通过UDP从c#应用程序发送的对象
EN

Stack Overflow用户
提问于 2015-12-25 18:56:53
回答 1查看 708关注 0票数 3

我在c#中有一个应用程序,它通过UDP连接到另一个应用程序,它是用c++编写的。我更喜欢一个可执行的解决方案,因为我希望测量事件客户端、一些处理服务器端和处理完全返回客户端的响应之间的时间。实质上:往返延迟。

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

代码语言:javascript
运行
复制
public class Package{

    public Package(){}

    public float DeliveryTime = 1.5;
    public int NumberOfItems = 2

}

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

代码语言:javascript
运行
复制
Package package = new Package();
var serializedPackage = ObjectToByteArray(package);

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

代码语言:javascript
运行
复制
client.Send(serializedPackage , serializedPackage .Length, ip);

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

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

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

代码语言:javascript
运行
复制
DeserializedPackage deserializedPackage = someDeserializeFunction(bytes);
if(deserializedPackage.NumberOfItems > 0){
    cout << deserializedPackage.DeliveryTime;
}

我从哪里开始?这有可能吗?

我对C#很熟悉,但对c++完全陌生,所以请不要混合c和c++。另外,我不希望使用Boost或其他库。

我也愿意接受一些建议,比如“将包对象转换为JSON并发送它,然后反序列化您的JSON并填充名为package的c++对象”。

EN

Stack Overflow用户

发布于 2015-12-25 19:08:04

您的问题是相同的,如何在两种语言之间序列化类型。

协议缓冲区是一种方式,下面是一个类似的问题,关于如何做between c++ and java。谷歌的PBs是在那里推荐的,尽管还有其他的。

但是,我最喜欢的以语言无关的方式序列化对象的方法是JSON。这很容易推理,而且可能是你能实现的最快的清洁的东西。所以我先说,除非你有任何有证据证明的表现异议。你好像已经知道怎么做了?

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34465523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档