快速业务通道

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

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
t;Children.Add(Id);
28 }
29 return Root;
30 }
31
32 void ServerMain()
33 {
34 GetConsole()->SetTitle(L"Vczh Library++ 2.0 Communication [Server]");
35
36 VL_Serializer Serializer;
37 InitializeSeriailzer(Serializer);
38
39 VL_SocketServer Server(vspTCP,L"8000",false);
40 if(Server.IsSuccess())
41 {
42 VL_ServerSocket* Socket=Server.WaitForConnection();
43 if(Socket)
44 {
45 GetConsole()->Write(L"监听到客户端。\r\n");
46 Node::Ptr MyNode=BuildNode();
47 WriteCommonObject(Socket->GetWriterStream(),Serializer.Serialize(MyNode.Object()));
48 delete Socket;
49 GetConsole()->Write(L"发送成功,关闭服务端。\r\n");
50 }
51 else
52 {
53 GetConsole()->Write(L"监听端口时发生错误。\r\n");
54 }
55 }
56 else
57 {
58 GetConsole()->Write(L"创建Socket时发生错误。\r\n");
59 }
60 }

下面是客户端的逻辑:

1 void ClientMain()
2 {
3 GetConsole()->SetTitle(L"Vczh Library++ 2.0 Communication [Client]");
4
5 VL_Serializer Serializer;
6 InitializeSeriailzer(Serializer);
7
8 VL_ClientSocket Socket(vspTCP,L"127.0.0.1",L"8000");
9 if(Socket.Connect())
10 {
11 GetConsole()->Write(L"连接到服务端。\r\n");
12 Node::Ptr MyNode=Serializer.Deserialize(ReadCommonObject(Socket.GetReaderStream()));
13 GetConsole()->Write(MyNode->ToString(L""));
14 }
15 else
16 {
17 GetConsole()->Write(L"连接服务端时发生错误。\r\n");
18 }
19 }

最后用Main函数来构造一个Event。程 序将被启动两次,先启动的成为服务器,后启动的成为客户端,方便将两部分的代码都放在 同一个文件里面:

1 void vlmain()
2 {
3   GetConsole()- >SetTitle(L"Vczh Library++ 2.0 Communication");
4   GetConsole()->SetTestMemoryLeaks(true);
5   GetConsole()- >SetPauseOnExit(true);
6
7   VL_SynEvent Event;
8   switch (Event.Create(false,false,L"VCZH"))
9   {
10   case VL_SynObject::arSucceed:
11     ServerMain();
12     break;
13   case VL_SynObject::arAlreadyExists:
14     ClientMain();
15     break;
16   case VL_SynObject::arFail:
17     GetConsole()->Write(L"构造Event时发生错误。\r\n");
18     break;
19   }
20 }

让我们看看运行结果:

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

下面是完 整的代码:

1 #include "..\..\..\Library\Platform\VL_Console.h"
2 #include "..\..\..\Library\Data\VL_CommonData.h"
3 #include "..\..\..\Library\Data\VL_Serialization.h"
4 #include "..\..\..\Library\Data\VL_Communication.h"
5 #include "..\..\..\Library\Data\VL_Stream.h"
6 #include "..\..\..\Library\Data\VL_System.h"
7
8 using namespace vl;
9 using namespace vl::platform;
10 using namespace vl::stream;
11 using namespace vl::system;
12 using namespace vl::system::synchronization;
13 using n

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号