快速业务通道

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

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
amespace vl::serialization;
14 using namespace vl::commondata;
15 using namespace vl::communication;
16
17 class Node : public VL_SerializableObject
18 {
19 public:
20 typedef VL_AutoPtr<Node> Ptr;
21
22 virtual VUnicodeString ToString(VUnicodeString Prefix)=0;
23 };
24
25 class NumberNode : public Node
26 {
27 public:
28 VInt Number;
29
30 NumberNode()
31 {
32 VL_SERIALIZABLE_FIELD(NumberNode,Number);
33 }
34
35 VUnicodeString ToString(VUnicodeString Prefix)
36 {
37 return Prefix+VUnicodeString(Number);
38 }
39 };
40
41 class IdNode : public Node
42 {
43 public:
44 VUnicodeString Id;
45
46 IdNode()
47 {
48 VL_SERIALIZABLE_FIELD(IdNode,Id);
49 }
50
51 VUnicodeString ToString(VUnicodeString Prefix)
52 {
53 return Prefix+Id;
54 }
55 };
56
57 class ListNode : public Node
58 {
59 public:
60 VL_List<Ptr , false , Node*> Children;
61
62 ListNode()
63 {
64 VL_SERIALIZABLE_FIELD(ListNode,Children);
65 }
66
67 VUnicodeString ToString(VUnicodeString Prefix)
68 {
69 VUnicodeString Result;
70 Result+=Prefix+L"List {\r\n";
71 for(VInt i=0;i<Children.GetCount();i++)
72 {
73 if(Children[i])
74 {
75 Result+=Children[i]->ToString(Prefix+L" ")+L"\r\n";
76 }
77 else
78 {
79 Result+=Prefix+L" <NULL>\r\n";
80 }
81 }
82 Result+=Prefix+L"}";
83 return Result;
84 }
85 };
86
87 void InitializeSeriailzer(VL_Serializer& Serializer)
88 {
89 VL_SERIALIZABLE_CLASS(&Serializer,NumberNode);
90 VL_SERIALIZABLE_CLASS(&Serializer,IdNode);
91 VL_SERIALIZABLE_CLASS(&Serializer,ListNode);
92 }
93
94 Node::Ptr BuildNode()
95 {
96 ListNode* Root=new ListNode;
97 {
98 NumberNode* Number=new NumberNode;
99 Number->Number=10;
100 Root->Children.Add(Number);
101 }
102 {
103 ListNode* List=new ListNode;
104 {
105 NumberNode* Number=new NumberNode;
106 Number->Number=20;
107 List->Children.Add(Number);
108 }
109 List->Children.Add(0);
110 {
111 IdNode* Id=new IdNode;
112 Id->Id=L"Serialization";
113 List->Children.Add(Id);
114 }
115 Root->Children.Add(List);
116 }
117 {
118 IdNode* Id=new IdNode;
119 Id->Id=L"VCZH";
120 Root->Children.Add(Id);
121 }
122 return Root;
123 }
124
125 void ServerMain()
126 {
127 GetConsole()->SetTitle(L"Vczh Library++ 2.0 Communication [Server]");
128
129 VL_Serializer Serializer;
130 InitializeSeriailzer(Serializer);
131
132 VL_SocketServer Server(vspTCP,L"8000",false);
133 if(Server.IsSuccess())
134 {
13

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号