Vczh Serialization Demo :在网络上传递复杂对象

今天将Serialization进行了重构,让其支持容器。于是使用以前的基础设施就能完成这 个Demo了。

为什么要做成这个样子呢?因为模板没有运行时匹配功能。虽然仍然大量 使用模板,但是接口上就没有了。模板被用来处理其他的事情。

这个程序分为服务器 端和客户端两个部分,使用Socket连接。服务器端监听到一个客户端之后将一棵树发送过去 之后退出。客户端接收到这棵树之后将内容打印到屏幕上。于是我们实现一颗多态的树。树 的节点分为数字节点、字符串节点和列表节点三种,共同继承自一个基类。这样的话就可以 使用多态来构造成一棵树并进行操作了:

1 class Node : public VL_SerializableObject 2 { 3 public: 4     typedef VL_AutoPtr<Node> Ptr; 5 6     virtual VUnicodeString ToString(VUnicodeString Prefix)=0; 7 }; 8 9 class NumberNode : public Node10 {11 public:12     VInt Number;1314     NumberNode()15     {16         VL_SERIALIZABLE_FIELD(NumberNode,Number);17     }1819     VUnicodeString ToString(VUnicodeString Prefix)20     {21         return Prefix+VUnicodeString(Number);22     }23 };2425 class IdNode : public Node26 {27 public:28     VUnicodeString Id;2930     IdNode()31     {32         VL_SERIALIZABLE_FIELD(IdNode,Id);33     }3435     VUnicodeString ToString(VUnicodeString Prefix)36     {37         return Prefix+Id;38     }39 };4041 class ListNode : public Node42 {43 public:44     VL_List<Ptr , false , Node*> Children;4546     ListNode()47     {48         VL_SERIALIZABLE_FIELD(ListNode,Children);49     }5051     VUnicodeString ToString(VUnicodeString Prefix)52     {53         VUnicodeString Result;54         Result+=Prefix+L"List  {\r\n";55         for(VInt i=0;i<Children.GetCount();i++)56         {57             if(Children[i])58             {59                 Result+=Children[i]->ToString(Prefix+L"    ")+L"\r\n";60             }61             else62             {63                 Result+=Prefix+L"    <NULL>\r\n";64             }65         }66         Result+=Prefix+L"}";67         return Result;68     }69 };

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索多态
, tostring
, 节点
, public
, result
1819
轮子哥vczh老婆照片、vczh 陈萌萌图片、陈萌萌 vczh照片、陈萌萌 vczh、vczh博客,以便于您获取更多的相关知识。

时间: 2024-09-20 15:37:48

Vczh Serialization Demo :在网络上传递复杂对象的相关文章

巧用Android网络通信技术在网络上直接传输对象

要做一个优秀的Android应用,使用到网络通信技术是必不可少的,很难想象一款没有网络交互的软件最 终能发展得多成功.那么我们来看一下,一般Android应用程序里都是怎么实现网络交互的,这里拿一个 Boook对象为例: 如上图所示,首先在手机端生成一 个Book对象,里面包含书名.作者.价格等数据.为了要将这些数据发送到服务器端,我们要从Book对象中 把数据取出,然后组装成XML格式的字符串.接着通过网络API,把组装好的XML字符串发送到服务器端.服务 器端接到了客户端发来的XML字符串,

Android:Service之AIDL传递复杂对象

  AIDL传递复杂类型对象的特殊处理 前面已经介绍了通过AIDL接口在进程间传递系统允许的数据,如果需要传递一个复杂类型的对象,就没那么简单了,需要额外做一些处理.如下: 定义数据接口的AIDL文件中,使用parcelable关键字,例如:parcelable Message; 在其数据实现类中实现Parcelable接口,并实现对应的方法. 在业务接口的AIDL文件中,使用import引入数据接口AIDL的包名. 例如:Message.aidl 1 parcelable Message; 例

[j2me]利用kSOAP让MIDP设备与WebService之间传递类对象[上]

 测试代码下载:http://files.cnblogs.com/zhengyun_ustc/WSCallerMIDlet.rar [j2me]利用kSOAP让MIDP设备与 WebService之间传递类对象 编写者 日期 关键词 郑昀@ultrapower 2005-8-14 J2me webservice soa ksoap serialization MIDP CLDC 无线设备联网的概念 中国移动GPRS网络的连接方式有两种类型,一种是WAP+GPRS,接入名称叫CMWAP,一种是KJ

c#-C#网络编程使用SharpPcap.dll来抓取网络上的TCP数据包,怎么才能完整的还原抓取的数据?

问题描述 C#网络编程使用SharpPcap.dll来抓取网络上的TCP数据包,怎么才能完整的还原抓取的数据? 5C 如题,C#网络编sd程使用SharpPcap.dll来抓取网络上的TCP数据包,怎么才能完整的还原抓取的数据?我是要抓取特定的两台机器之间的数据传递,已知传递的数据包的组成规则,有这么几个问题:1.怎么才能完整的获取所有的数据包?2.获取的数据包需不需要考虑TCP数据包的重传或者错误传递的数据包? 谢谢. 解决方案 c# 使用sharppcap实现 网络抓包 使用SharpPCa

人们可以在网络上找到的常见分页类型及其好处和弊端

摘要: 分页的动作就是将一篇内容放在不同的页面中.如果使用不当会严重影响用户体验,Web开发和搜索引擎优化(SEO). 这篇文章是SEO分页优化指南的第一部分,我们将讨论人们可以在网络上 分页的动作就是将一篇内容放在不同的页面中.如果使用不当会严重影响用户体验,Web开发和搜索引擎优化(SEO). 这篇文章是SEO分页优化指南的第一部分,我们将讨论人们可以在网络上找到的常见分页类型,并列出在使用分页的好处和弊端. 网络上在使用的分页 你可以在网上找到的最常见的类型是: 列表分页:我们使用这种类型

让菜鸟在网络上飞扬--Chinaz阿飞访谈

前言 在老虎的百般"刁难"下,<电脑报>网通版的老大终于下决心准备做中国站长纪实专访了.接下来摆在笔者面前的是一个严重的问题,究竟这第一个站长从谁开始呢?无意中和站长热讯的站长penzi见了一面,他向我推荐了一位朋友,网名阿飞,经历与成绩都适合我的专栏,所以决定,先把他推到前线,做我们这个专题的第一炮. 中国站长站(域名:http://www.chinaz.com)在网上可是小有名气,如果你平时只是看看新闻,聊聊天那么你肯定不知道,但是如果你还经常反问一些个人网站,或者您自

xp到路由器的手动隧道实现在ipv4网络上传输IPV6的实验

实验目的: 在XP和路由器间运行手动隧道,实现在ipv4网络上传输IPV6 实验拓扑: XP配置: 第一步配置ipv4 第二步配置ipv6 R2: interface Tunnel2 ipv6 address 2000::2/64 tunnel source FastEthernet0/1 tunnel destination 192.168.80.80 tunnel mode ipv6ip ! interface FastEthernet0/0 ipv6 address 2001::2/64

移动视频在2.5G及3G网络上的应用

牛安东:各位领导.各位嘉宾,首先我代表富年科技感谢这次盛会的筹办单位和协办单位,我感觉这次大会的题目非常好,无线娱乐,颠覆您的生活.实际上从产业链环境的思考来看,我倒觉得娱乐这个话题是一个不轻松的话题,应该说从我身边一些国家的发展实际情况来看,对于我们CDSP,也是一种挑战,我今天跟大家分享的话题就是如何在2.5代和3代的网络上实现移动视频服务,我们要在大家的手中创造更多的快乐,我想这也是符合我们今天整个大会的主题的. 今天我想把关于富年电子一些基本的情况,现在富年科技已经能够成熟的为各个事业合

Android上网获取网络上的图片方法

  要获取网络上的图片,首先得有网络的访问权限,这个不再写了,以前的文章中写过,还有布局方式不再写了,就是写也是一个简单的布局,没有多大意义,直接上核心代码: 这是本人使用的一个简单的类,来获取网上的图片. public static Bitmap getImage(String Url) throws Exception { try { URL url = new URL(Url); String responseCode = url.openConnection().getHeaderFie