|   | 
      #include "stdafx.h" 
        #include "Test_ARTStar.h" 
        #include "artStar.h" 
        #include <fstream> 
        #include "JWTime.h" 
        using namespace orsci; 
       
        namespace __Test_ARTStar__ 
          { 
          using namespace art; 
        FILE * desFile; 
         int xxyy = 0; 
         int recvFileSize = 0; 
		 
        class TMyARTStar : public TARTStar 
          { 
          private: 
        public: 
          TMyARTStar(const EARTExeServiceMode AARTExeMode = eaem_StarParallel) : TARTStar(AARTExeMode) 
          { 
          } 
          ~TMyARTStar() {} 
        public: 
          virtual void OnARTLogin(const int & AARTID, const string & APeerIP, const TPORTTYPE & APeerPort) override 
          { 
          cout << "[OnARTLogin]收到一个新的用户加入:" << AARTID << "\t" << APeerIP << " : " << APeerPort << endl; 
         }			//哪个Star连接了。 
          virtual void OnARTLogout(const int & AARTID, const string & APeerIP, const TPORTTYPE & APeerPort) override 
          { 
          cout << "[OnARTLogout]收到一个用户注销:" << AARTID << "\t" << APeerIP << " : " << APeerPort << endl; 
          }		//哪个Star断开了。 
          virtual void OnCenterDisconnected(const string & APeerIP, const TPORTTYPE & APeerPort) 
          { 
          cout << "OnCenterDisconnected:" << APeerIP << " : " << APeerPort << endl; 
          } 
          public: 
          virtual void OnReceiveP2P(const string & APeerIP, const TPORTTYPE & APeerPort, TPIPEComPackage * & pRecvPackage) 
          {		//本事件触发接收一个PIPECom包 
          //cout << "[ART]收到P2P包:IP地址" << APeerIP << " -- 端口 " << APeerPort << " 包大小: " << pRecvPackage->headlen + pRecvPackage->size() << endl;  
          //cout << pRecvPackage->readstring() << endl; 
          //TPIPEComPackagePool::LaybackPackage(pRecvPackage);	//测试外界释放的效果! 
          xxyy ++; 
          return; 
         recvFileSize += pRecvPackage->size(); 
          if (xxyy == 1){ fwrite(pRecvPackage->bodybuf, sizeof(char), pRecvPackage->size(), desFile); fflush(desFile);} 
          else cout << "[ART]a收到P2P包:IP地址" << APeerIP << " -- 端口 " << APeerPort << " 包大小: " << pRecvPackage->ct_headlen + pRecvPackage->size() << endl;  
          //desFile << pRecvPackage->readstring(); 
          //desFile << endl; 
          }			//当接收到数据时 
          virtual void OnReceivePIPE(const string & APeerIP, const TPORTTYPE & APeerPort, const unsigned int APipeIndex, TPIPEComPackage * & pRecvPackage) 
          { 
          xxyy++; 
          return; 
         recvFileSize += pRecvPackage->size(); 
          if ((xxyy == 1) && (APipeIndex == 2)) {fwrite(pRecvPackage->bodybuf, sizeof(char), pRecvPackage->size(), desFile); fflush(desFile);} 
          else  
          cout << "[MyART]收到PIPE包,来自管道 " << APipeIndex << " :IP地址" << APeerIP << " -- 端口 " << APeerPort << " 包大小: " << pRecvPackage->ct_headlen + pRecvPackage->size() << endl;  
          } 
        public:	//真正有用的事件 
          virtual void OnReceiveRSM(const int & APeerARTID, const int & ATransctionID, const int & AFunctionID, TMemoryStreamTool & recvStream, const int & APeerEntityID, const int & ALocalEntityID) override 
          {		//本事件触发接收一个PIPECom包 
          //cout << "[MyART]OnReceiveRSM:IP地址" << APeerIP << " -- 端口 " << APeerPort << " 包大小: " << recvStream.size() << endl;  
          //xxyy++; 
          //return; 
          cout << "[MyART]OnReceiveRSM:ARTID=" << APeerARTID << " 实体号:" << APeerEntityID << " 本地实体号:" << ALocalEntityID << " 包大小: " << recvStream.size() << endl;  
          cout << "接收的字符串为:" << recvStream.readstring() << endl; 
          //cout << recvStream.traceInfo.getInfoStr() << endl; 
          }			//当接收到数据时 
          virtual void OnReceiveRPC(const int & APeerARTID, const int & ATransctionID, const int & AFunctionID, TMemoryStreamTool & recvStream, EARTOnServiceReturnFlag & retServicedFlag, TMemoryStreamTool & retResult, const int & APeerEntityID, const int & ALocalEntityID) override 
          {		//本事件触发接收一个PIPECom包 
          xxyy++; 
          //return; 
          cout << "[MyART]OnReceiveRPC:ARTID=" << APeerARTID << " 实体号:" << APeerEntityID << " 本地实体号:" << ALocalEntityID << " 包大小: " << recvStream.size() << endl;  
          retServicedFlag = sv_Success; 
          retResult.writestring("[RPC Reply]新年好!"); 
          //cout << recvStream.traceInfo.getInfoStr() << endl; 
         retServicedFlag = sv_Success; 
         //char xx; 
          //cin >> xx; 
          //if (LocalARTID() == 2) 
          //{ 
          //	TPIPECom::msg("[RPC回调开始]IP地址" + APeerIP + " -- 端口 " + TARTTools::toStr(APeerPort), "包大小!" + TARTTools::toStr(recvStream.size())); 
          //	RPC(APeerIP, APeerPort, ATransctionID, 55, retResult, retResult, 7, 9); 
          //	TPIPECom::msg("[RPC回调结束]IP地址" + APeerIP + " -- 端口 " + TARTTools::toStr(APeerPort), "包大小!" + TARTTools::toStr(recvStream.size())); 
          //	cout << "回调完成!" << endl; 
          //} 
          //else 
          //TPIPECom::msg("[RPC执行,不回调]" + jw::IntToStr(APeerARTID), "包大小!" + TARTTools::toStr(recvStream.size())); 
         }			//当接收到数据时 
          virtual void OnReceiveEVENT(const int & APeerARTID, const int & ATransctionID, const int & AFunctionID, TMemoryStreamTool & recvStream, EARTOnServiceReturnFlag & retServicedFlag, TMemoryStreamTool & retResult, const int & APeerEntityID, const int & ALocalEntityID) override 
          { 
          cout << "[MyART]OnReceiveEVENT:ARTID=" << APeerARTID << " 实体号:" << APeerEntityID << " 本地实体号:" << ALocalEntityID << " 包大小: " << recvStream.size() << endl;  
          TPIPECom::msg("[EVENT]ARTID=" + jw::IntToStr(APeerARTID), "包大小!" + TARTTools::toStr(recvStream.size())); 
          } 
        public: 
          virtual void OnReceiveFILEBegin(const int & APeerARTID, const string & ASuggestFileName, const bool & flagExistOverride, const long long & AFileSize, const string & AAttachInfo, bool & retPermitTransFlag, string & retLocalRealName) override 
          { 
          cout << "[TARTStar::OnReceiveFILEBegin]收到传输文件请求(下面允许接收):ARTID" << APeerARTID << " 文件名: " << ASuggestFileName << " 文件大小:" << AFileSize << endl;  
          retPermitTransFlag = true; 
          } 
          //默认不接收文件传输。即retPermitTransFlag == false。需要用户接管该事件,然后设置retPermitTransFlag == true,才能开始后续的文件传输工作。 
          virtual void OnReceivingFILEProcess(const int & APeerARTID, const string & AFileName, const string & AAttachInfo, const long long & AFileSize, const long long & ACurReceivedSize, bool & retInteruptFlag) override 
          { 
          //cout << "OnReceiveFILEProcess():" << ACurReceivedSize << " / " << AFileSize << endl; 
          } 
          virtual void OnReceiveFILEEnd(const int & APeerARTID, const string & AFileName, const long long & AFileSize, const string & AAttachInfo) override 
          { 
          cout << "[TARTStar::OnReceiveFILEEnd]文件传输成功:ARTID=" << APeerARTID << " 文件名: " << AFileName << " 文件大小:" << AFileSize << endl;  
          } 
          virtual void OnReceiveFILERollback(const int & APeerARTID, const string & AFileName, const long long & AFileSize, const string & AAttachInfo, const EFileRollBackReason ARollbackReason) override 
          { 
          cout << "[TARTStar::OnReceiveFILERollback]文件传输取消:ARTID=" << APeerARTID << " 文件名: " << AFileName << " 文件大小:" << AFileSize << endl;  
          } 
          virtual void OnSendingFILEProcess(const int & APeerARTID, const string & ALocalFileName, const string & ASuggestPeerFileName, const string & AAttachInfo, const long long & AFileSize, const long long & ACurSendSize, bool & retInteruptFlag) override 
          { 
          //if ((ACurSendSize / (double)AFileSize) * 10)  
          //cout << "OnSendFILEProcess():" << ACurSendSize << " / " << AFileSize << endl; 
          } 
        }; 
		 
        class TTestShareObject : public TShareClass	//基于类的共享。 
          { 
          public: 
          int x; 
          double y; 
          string z; 
          public:		//注意:下面两个方法内部,请不要增加锁定,锁定过程将由外界使用者自行约定。 
          virtual void ExportToStream(TStream & retStream) override 
          { 
          retStream << x << y << z; 
          } 
         virtual bool ImportFromStream(TStream & AStream) override 
          { 
          AStream >> x >> y >> z;  
          return true; 
          } 
         void DispInfo() 
          { 
          cout << "x = " << x << " y = " << y << " z = " << z << endl; 
          } 
          }; 
        int xy = 0; 
        TShareInt glb_ShareInt; 
		 
        void Demo_ARTClient() 
          { 
         cout << " ======================================================" << endl; 
          cout << "             ARTStar C++ V3.70 分布式ART端" << endl; 
          cout << endl; 
          cout << "操作:执行过程中,可以输入数字代表发送普通包和Echo包" << endl; 
          cout << "      1--RSM_NoWait;2--RPC包, 3 -- QueryTable, 4-读写内存, " << endl; 
          cout << "      5-P2PConnect, 6--P2PDisconnect, 7--RegistStar" << endl; 
          cout << "      8--UnRegist, 0--显示统计信息, 13--发送文件" << endl; 
          cout << "      15-状态注册,16,17-演示变量自动同步功能" << endl; 
          cout << "      20-查询某ART的共享变量信息" << endl; 
          cout << "      100以上整数(按回车),则退出程序。" << endl; 
          cout << "本服务程序需要连接2910TCP端口,若有防火墙拦截,请设置允许!" << endl; 
          cout << " ======================================================" << endl; 
          art::TNetTools::Demo_DispLocalNetWorkInfo(); 
          cout << "需要输入:(0)本地IP地址;(1)服务器的IP地址;(2)服务器的端口。" << endl; 
          cout << endl; 
         TMyARTStar mm(eaem_StarParallel); 
          cout << "Mode = " << mm.getExeServiceMode() << endl; 
          //TTraceCall::ct_TraceFileName = "TraceStar.log"; 
          //mm.EnableComStat(true);		//打开统计功能 
         if (false) 
          { 
          cout << mm.fileShare.LocalDirectoryExists("D:") << endl; 
          cout << mm.fileShare.LocalDirectoryExists("D:\\zzzz") << endl; 
          cout << mm.fileShare.LocalDirectoryExists("E:\\JWART\\ART\\ARTSourceCode\\JSDPVCL") << endl; 
          //cout << mm.fileShare.LocalFileDelete("D:\\exp\\zzzz\\54Access.txt_FIFS_CCDEval.txt") << endl; 
          //cout << mm.fileShare.LocalDirectoryDelete("D:\\exp\\zzzz\\") << endl; 
          //cout << mm.fileShare.LocalFileRename("D:\\exp\\zzz\\z.txt", "haha.doc") << endl;; 
          cout << mm.fileShare.LocalDirectoryRename("D:\\exp\\zzz\\", "yyy") << endl; 
         vector<string> mList; 
          vector<bool> mIsDirFlagList; 
          bool mmmzzzz = mm.fileShare.LocalFolderSubDirAndFileList("D:\\exp\\", mList, mIsDirFlagList); 
          for (int k = 0; k < mList.size(); k ++) 
          { 
          cout << k << "\t" << mIsDirFlagList[k] << "\t" << mList[k] << endl; 
          } 
          cout << "共包括:" << mList.size() << " 项!" << endl; 
         return; 
          } 
          //#define LOCAL_COMPUTER 
          #undef LOCAL_COMPUTER 
        //#define NORMAL_EXE 
          #ifdef NORMAL_EXE 
          cout << "是否打开文件(1打开!):"; 
          cin >> xxyy; 
          if (xxyy == 1) 
          desFile = fopen("D:\\aabb.rar", "wb"); 
          #endif 
         string mLocalBoundIP = "127.0.0.1"; 
          //mLocalBoundIP = "192.168.1.99"; 
          //#ifndef LOCAL_COMPUTER 
          cout << "(0)请输入本地IP地址(数字1代表本地127.0.0.1):"; 
          mLocalBoundIP = ""; 
          while (mLocalBoundIP == "")	cin >> mLocalBoundIP; 
          if (mLocalBoundIP.length() < 5) mLocalBoundIP = "127.0.0.1"; 
          //#endif 
          mm.Open(mLocalBoundIP, 0);	//任意绑定! 
          //mm.Open("192.168.1.99", 0, true);	//任意绑定! 
          cout << "本地IP地址:" << mm.LocalIP() << "\t端口:" << mm.LocalPort() << endl; 
   
          //string mIP = "127.0.0.1"; 
          string mIP = mLocalBoundIP; 
          int mPort = 2910; 
          #ifndef LOCAL_COMPUTER 
          cout << "请输入:(1)服务器的IP地址:"; 
          //while (mIP == "") getline(cin, mIP); 
          cin >> mIP; 
          if (mIP.length() < 5) mIP = "127.0.0.1"; 
          //#endif 
          //if (mIP == "") { mIP = "127.0.0.1"; cout << "ps:您没有输入,按照127.0.0.1设置" << endl;}	//如果用户直接按下回车,则发送给本机器。 
          cout << "请输入:(2)服务器的端口号(如2910,输入单个数字也意味着2910):"; 
          cin >> mPort; 
          if (mPort < 10) mPort = 2910; 
          #endif 
        #ifndef LOCAL_COMPUTER 
          //cout << "执行方案(0--IBM, 1--SYS):"; 
          //int mMethod = 0; 
          //cin >> mMethod; 
          //string mLocalBoundIP = "192.168.1.2"; 
          //if (mMethod == 0) mLocalBoundIP = "192.168.1.99"; 
         //mm.Open(mLocalBoundIP, 4612);	//任意绑定! 
          //cout << "本地IP地址:" << mm.LocalIP() << "\t端口:" << mm.LocalPort() << endl; 
          // 
          //string mIP = "192.168.1.99"; 
          //if (mMethod == 0) mIP = "192.168.1.2"; 
          //unsigned short int mPort = 4612; 
         
        #endif 
         mm.memShare.RegistObject("starsharevar", glb_ShareInt); 
          //glb_ShareInt.BeginWrite(); 
          glb_ShareInt.data = 7654;	//因为整数数据很短,所以不用加锁,否则需要锁定。 
          //glb_ShareInt.EndWrite(); 
         TARTPackage rp;	//接收包 
          TARTPackage sp;	//发送数据包; 
          //sp.writeint(0); 
          //sp.writeint(0); 
          sp << "你好啊,我是一只小小鸟!"; 
          cout << "数据长度:" << sp.size() << " 总长度:" << sp.headlen + sp.size() << endl; 
          int mFlag = 1; 
          while ((mFlag >= 0) && (mFlag <= 100)) 
          { 
          cout << "继续发送数据包(输入1或2发送,其它数字退出):"; 
          cin >> mFlag; 
          //for (int k = 0; k < 100; k ++)	//进行循环,压力测试。 
          if (mFlag == 0) 
          { 
          cout << "=============================================================" << endl; 
          cout << "本地ARTID:" << mm.LocalARTID() << "       IP地址:" << mm.LocalIP() << " : " << mm.LocalPort() << endl; 
          cout << "发送包/数据量:" << mm.getComStat().send.PackageCount << "  /  " << mm.getComStat().send.WholeSize << endl; 
          cout << "接收包/数据量:" << mm.getComStat().recv.PackageCount << "  /  " << mm.getComStat().recv.WholeSize << endl; 
          cout << "当前内存申请包数量:" << TPIPEComPackagePool::GetAllocateTotalCount() << endl; 
          //cout << "客户信息情况如下:" << endl; 
          cout << "----------------- PIPECom ClientTable------------------------------" << endl; 
          mm.PIPEComClientInfoTable().DispClientInfoTable(); 
          cout << "----------------- ARTBase ClientTable------------------------------" << endl; 
          mm.ARTBaseClientInfoTable().DispClientInfoTable(); 
          cout << "----------------- ARTCustom ClientTable ---------------------------" << endl; 
          cout << mm.ARTClientTable().DispClientTable() << endl;; 
          cout << "------------------    本地内存共享情况    --------------------------" << endl; 
          cout << mm.memShare.SearchShareMemBasicList() << endl; 
          //准备导出本地共享文件目录。 
          vector<string> mRootList, mRealPathList; 
          mm.ExportLocalVirtualRootPathToList(mRootList, mRealPathList); 
          if (mRootList.size() > 0) 
          { 
          cout << "------------------    本地共享文件目录    --------------------------" << endl; 
          for ( int k = 0; k < mRootList.size(); k ++) 
          { 
          cout << k << "\t" << mRootList[k] << "\t-->\t" << mRealPathList[k] << endl; 
          } 
          } 
          cout << "-------------------------------------------------------------------" << endl; 
          cout << "本地ARTID = " << mm.LocalARTID() << " 本地IP地址:" << mm.LocalIP() << " : " << mm.LocalPort() << endl; 
          } 
          if (mFlag == 1) 
          { 
          cout << "请输入ART客户端ARTID(0--群发):"; 
          int mARTID; 
          cin >> mARTID; 
          //if (mARTID != 0) 
          { 
          TMemoryStream mss; 
          mss.writestring("[RSM]新春快乐!2012---win!!!"); 
          //TARTCustom::EnableTrace(false, "abc.txt"); 
          bool mResultFlag = mm.RSM(mARTID, 0, 2, sp, 7, 8); 
          cout << "RSM发送结果:" << mResultFlag << endl;  
          } 
          } 
          if (mFlag == 2) 
          { 
          cout << "请输入RPC的ART客户端ARTID:"; 
          int mARTID; 
          cin >> mARTID; 
          //if (mARTID != 0) 
          { 
          TMemoryStream mss; 
          //mss.traceInfo.AddInfo("TMyStar::开始执行RPC,哈哈,测试跟踪效果!"); 
          mss.writestring("[RPC]新春快乐!2012---win!!!"); 
          EARTRPCResult mResultFlag = mm.RPC(mARTID, 0, 1, mss, mss, 6, 9); 
          cout << "RPC发送结果:" << TARTBaseInterpret::InterpretRPCResult(mResultFlag) << endl;  
          cout << "RPC结果包大小:" << mss.size() << endl; 
          //mss.clear();	//该语句用于测试跟踪效果! 
          if (mResultFlag == rpc_Success) cout << mss.readstring() << endl; 
          } 
          } 
          if (mFlag == 3) 
          {  
          cout << "本地共享变量值:" << glb_ShareInt.data << endl; 
          //cout << "查询ART客户表:" << mm.QueryARTTable(mm.ARTClientTable()) << endl; 
          //cout << mm.ARTClientTable().DispClientTable() << endl; 
          } 
          //if (mFlag == 2) {EARTRSMResult mResultFlag = mm.RSM_WaitFinishService(mIP, mPort, sp); cout << "MSG发送结果:" << mResultFlag << endl; } 
          //if (mFlag == 3) cout << mm.UDPSendPackage(mIP, mPort, sp) << endl; 
          if (mFlag == 4) 
          { 
          if (true) 
          { 
          cout << "输入要读取的ARTID:"; 
          int mPeerARTID; 
          cin >> mPeerARTID; 
          TShareInt zz; 
          EMemResult mFlag = mm.memShare.ShareRead(mPeerARTID, "starsharevar", zz); 
          cout << "内存读操作结果 = " << mFlag << endl; 
          if (mFlag == mem_Success) cout << "读取成功:" << zz.data << endl; 
          zz.data += 2; 
          cout << "再次写入,增加2 = " << mFlag << endl; 
          mm.memShare.ShareWrite(mPeerARTID, "starsharevar", zz); 
         
         cout << "再次读取结果 = "; 
          TShareInt tempInt; 
          tempInt.Bind(mm, jw::IntToStr(mPeerARTID) + ":\\starsharevar"); 
          tempInt.data = 4455; 
          tempInt.ShareRead(); 
          cout << tempInt.data << endl; 
         } 
          if (false) 
          { 
          TShareVar zz(sizeof(int)); 
          //EMemShareOprResult mFlag = mm.memShare.ShareRead(mIP, 2910, "sharevar", zz); 
          //cout << "内存读操作结果 = " << mFlag << endl; 
          //if (mFlag == mem_Success) cout << "读取成功:" << zz.asInt() << endl; 
          //zz.asInt() ++; 
          //mm.memShare.ShareWrite(mIP, 2910, "sharevar", zz); 
          } 
          if (false) 
          { 
          TTestShareObject mso; 
          //EMemShareOprResult mFlag = mm.memShare.ShareRead(mIP, 2910, "mso", mso); 
          //cout << "内存读操作结果 = " << mFlag << endl; 
          //if (mFlag == mem_Success) cout << "读取成功:" << mso.x << "\t" << mso.y << "\t" << mso.z << endl; 
          //mso.DispInfo(); 
          //mso.x ++; 
          //mso.y = mso.y + 100; 
          //mso.z = mso.z + "*" + jw::IntToStr(mso.x); 
          //mm.memShare.ShareWrite(mIP, 2910, "mso", mso); 
          } 
          if (false) 
          { 
          TShareString shareString; 
          //EMemShareOprResult mFlag = mm.memShare.ShareRead(mIP, 2910, "jiangwei", shareString); 
          //cout << "内存读操作结果 = " << mFlag << endl; 
          //if (mFlag == mem_Success) cout << shareString.data << endl; 
          //shareString.data += "*" + jw::IntToStr(rand()); 
          //mFlag = mm.memShare.ShareWrite(mIP, 2910, "jiangwei", shareString); 
          //cout << "内存写操作结果 = " << mFlag << endl; 
          } 
         if (true) 
          { 
          TShareString shareString; 
          shareString.Bind(mm, "sharestring");	//没有指明位置,默认为全局变量。 
          EMEMResult mFlag = shareString.ShareRead(); 
          cout << "全局变量,读操作结果 = " << mFlag << endl; 
          if (mFlag == mem_Success) cout << shareString.data << endl; 
          shareString.data += "*" + jw::IntToStr(rand()); 
          mFlag = shareString.ShareWrite(); 
          cout << "全局变量,写操作结果 = " << mFlag << endl; 
          } 
          if (false) 
          { 
          //TFileStream mDes("D:\\xxyyxx.rar", fmOpenWrite); 
          //TMemoryStream mDes; 
          //TShareStreamTool mfs(mDes); 
          //cout << "内存读取结果:" << mm.memShare.ShareRead(mIP, 2910, "mfs", mfs) << endl; 
          } 
          } 
          if (mFlag == 5) 
          { 
          string svrIP = mIP; 
          //cout << "请输入将要连接的服务器的IP地址:"; 
          //while (svrIP == "") getline(cin, svrIP); 
          //cout << "请输入将要连接的服务器的端口号:"; 
          unsigned short svrPort = mPort; 
          //cin >> svrPort; 
          //EPIPEComP2PConnectResultType mResultFlag = mm.Connect(svrIP, svrPort, 10000);  
          EARTStarConnectResultType mResultFlag = mm.ConnectCenter(svrIP, svrPort, 10000);  
          cout << "CenterConnect结果:" << mResultFlag << endl;  
          } 
          if (mFlag == 6) 
          { 
          string svrIP = mIP; 
          //cout << "请输入将要连接的服务器的IP地址:"; 
          //while (svrIP == "") getline(cin, svrIP); 
          cout << "请输入将要连接的服务器的端口号:"; 
          unsigned short svrPort = mPort; 
          cin >> svrPort; 
          EPIPEComP2PDisconnectResultType mFlag = mm.Disconnect(svrIP, svrPort);  
          cout << "P2PDisconnect结果:" << mFlag << endl;  
          } 
          if (mFlag == 7) 
          { 
          if (mm.is_ConnectCenter() == true) 
          { 
          int artid; 
          cout << "请输入本地的ARTID(0,为需要分配的ID):"; 
          cin >> artid; 
          vector<int> roleList; 
          roleList.push_back(34); 
          roleList.push_back(56); 
          cout << "ARTLogin返回结果标记:" << mm.Login(artid, "ART", roleList) << endl; 
          cout << "本地ARTID为" << mm.LocalARTID() << endl; 
         //现在测试全局共享内存的写入情况。 
         mm.memShare.RegistGlobalObject("zz"); 
          { 
          TShareString sszz, ttgg; 
          sszz.data = "大河向西流啊!"; 
          EMemResult mFlag = mm.memShare.ShareWrite(1, "ppp", sszz); 
          cout << "内存写入结果标记:" << mFlag << endl; 
          mFlag = mm.memShare.ShareRead(1, "ppp", ttgg); 
          cout << "内存读取结果标记:" << mFlag << endl; 
          cout << "读取的数据为:" << ttgg.data << endl; 
          } 
          mm.EnableShareMem_GlobalAutoAppend = true; 
          { 
          TShareString sszz, ttgg; 
          sszz.data = "----东边日出西边雨!------"; 
          EMemResult mFlag = mm.memShare.ShareWrite(2, "ppp", sszz); 
          cout << "内存写入结果标记:" << mFlag << endl; 
          mFlag = mm.memShare.ShareRead(2, "ppp", ttgg); 
          cout << "内存读取结果标记:" << mFlag << endl; 
          cout << "读取的数据为:" << ttgg.data << endl; 
          } 
          } 
          else cout << "[Error]请首先连接到Center!" << endl; 
          } 
          if (mFlag == 8) 
          { 
          if (mm.is_ConnectCenter() == true) 
          { 
          mm.Logout(); 
          cout << "本地ARTID为" << mm.LocalARTID() << endl; 
          } 
          else cout << "[Error]请首先连接到Center!" << endl; 
         } 
          if (mFlag == 77) 
          { 
          cout << " xxyy == " << xxyy << endl; 
          DisplayTotal(); 
          continue; 
          } 
          if (mFlag == 9) 
          { 
          vector<int> zzz; 
          zzz.push_back(55); 
          zzz.push_back(33); 
          zzz.push_back(44); 
         int mResultFlag = mm.serviceConcept.RegistReceiveEvent(true, zzz); 
         cout << "RegistReceiveEvent发送结果:" << mResultFlag << endl;  
          continue; 
          } 
          if (mFlag == 10) 
          { 
          TMemoryStream mss; 
          mss.writestring("[RSM]新春快乐!2012---win!!!"); 
          cout << "[RSM]请输入对方ARTID:"; 
          int martid; 
          cin >> martid; 
         //TARTCustom::EnableTrace(false, "abc.txt"); 
          int mResultFlag = false; 
          TTimer zzz; 
          zzz.BeginTimer(); 
          //for (int k = 0; k < 100000; k ++) 
          { 
          mResultFlag = mm.EVENTToART(martid, 0, 55, sp, rp); 
          cout << "长度:" << sp.size() << endl; 
          //mResultFlag = mm.EVENT(0, 55, sp, true); 
          } 
          zzz.EndTimer(); 
          zzz.DispInDOS(); 
         cout << "NotifyEvent发送结果:" << mResultFlag << endl;  
          continue; 
          } 
          if (mFlag == 11) 
          { 
          TMemoryStream mss; 
          mss.writestring("[RSM]新春快乐!2012---win!!!"); 
          cout << "[RSM]请输入对方ARTID:"; 
          int martid; 
          cin >> martid; 
         //TARTCustom::EnableTrace(false, "abc.txt"); 
          int mResultFlag = 0; 
          TTimer zzz; 
          zzz.BeginTimer(); 
          //for (int k = 0; k < 100000; k ++) 
          { 
          //mResultFlag = mm.NotifyEVENT(martid, 0, 55, sp, rp); 
          mResultFlag = mm.EVENTToAllART(0, 55, sp, true); 
          } 
          zzz.EndTimer(); 
          zzz.DispInDOS(); 
         cout << "NotifyEvent发送结果:" << mResultFlag << endl;  
          continue; 
          } 
          if (mFlag == 12) 
          { 
          cout << "准备注册根" << endl; 
          cout << mm.fileShare.PublishVirtualSharePath("D:\\exp", "\\") << endl; 
          cout << mm.fileShare.PublishVirtualSharePath("D:\\exp\\yyy", "\\jw") << endl; 
          continue; 
          } 
          if (mFlag == 13) 
          { 
          cout << "准备删除注册根" << endl; 
          cout << mm.fileShare.RemoveVirtualSharePath("\\jw\\") << endl; 
          continue; 
          } 
          if (mFlag == 14) 
          { 
          cout << "列举出全部共享虚拟根:" << endl; 
          vector<string> mRootList, mLocalPathList; 
          mm.fileShare.ListAllRoots(mRootList, mLocalPathList); 
          for (int k = 0; k < mRootList.size(); k ++) 
          { 
          cout << k << "\t" << mRootList[k] << "  -->  " << mLocalPathList[k] << endl; 
          } 
         cout << "映射本地结果!" << endl; 
          string mRealPath, mRootARTID; 
          cout << mm.fileShare.VirtualPathToRealPath("2:\\zs.txt", mRootARTID, mRealPath) << endl; 
          cout << mRootARTID << endl; 
          cout << mRealPath << endl; 
         cout << mm.fileShare.VirtualPathToRealPath("2:\\jw\\ls.txt", mRootARTID, mRealPath) << endl; 
          cout << mRootARTID << endl; 
          cout << mRealPath << endl; 
         cout << mm.fileShare.VirtualPathToRealPath("2:\\jw\\ls.txt\\", mRootARTID, mRealPath) << endl; 
          cout << mRootARTID << endl; 
          cout << mRealPath << endl; 
         cout << mm.fileShare.VirtualPathToLocalPath_InThisLocalART("-1:\\jw\\ww.doc") << endl; 
          cout << mm.fileShare.VirtualPathToLocalPath_InThisLocalART("D:\\jw\\ww.doc") << endl; 
         cout << " hahah " << endl; 
          cout << mm.fileShare.is_VirtualRootPath("-1:\\jw") << endl; 
          cout << mm.fileShare.is_GuessPossibleVirtualPath("-1:\\jwzz\\haha") << endl; 
          cout << mm.fileShare.is_VirtualRootPath("2:\\jw") << endl; 
          continue; 
          } 
          if (mFlag == 15) 
          { 
          cout << "准备显示文件列表:" << endl; 
         cout << mm.fileShare.PathExists("D:\\exp\\") << endl; 
          //cout << mm.fileShare.PathCreate("2:\\jw\\zs") << endl; 
          cout << mm.fileShare.FileExists("2:\\jw\\z.txt") << endl; 
          //cout << mm.fileShare.FileDelete("2:\\jw\\复件 z.txt") << endl; 
          //cout << mm.fileShare.FileRename("2:\\jw\\z.txt", "y.doc") << endl; 
          continue; 
         vector<string> mFileNameList; 
          vector<bool> mIsDirFlagList; 
          cout << mm.fileShare.PathShowDirectoryAndFileList("2:\\", mFileNameList, mIsDirFlagList) << endl; 
          //cout << mm.fileShare.PathShowFileNameList("2:\\jw\\", mFileNameList) << endl; 
          for (int k = 0; k < mFileNameList.size(); k ++) 
          { 
          cout << k << "\t" << mFileNameList[k] << "\t" << mIsDirFlagList[k] << endl; 
          } 
          continue; 
          } 
          if (mFlag == 16) 
          { 
          //mm.fileShare.EnableSameIPIdentify(true); 
          vector<string> mRootList; 
          mm.fileShare.ListAllRoots(mRootList); 
          cout << "根列表!" << endl; 
          for (int k = 0; k < mRootList.size(); k ++) 
          { 
          cout << mRootList[k] << endl; 
          } 
          cout << "开始发送文件!" << endl; 
          //cout << mm.fileShare.FileUpload("D:\\exp\\yyy\\haha.txt", "2:\\jw\\zs\\tt.txt", false) << endl; 
          //cout << mm.fileShare.FileDownload("2:\\jw\\zs\\tt.txt", "D:\\exp\\yyy\\download.txt", true) << endl; 
          //cout << mm.fileShare.FileDownload("2:\\jw\\zs\\tt.txt", "D:\\exp\\yyyttt\\download.txt", true) << endl; 
         //cout << mm.fileShare.FileCopy("2:\\jw\\zs\\tt.txt", "5:\\ggg.txt", true) << endl; 
          //cout << mm.fileShare.FileCopy("2:\\jw\\zs\\tt.txt", "D:\\exp\\ggg.txt", true) << endl; 
         //cout << mm.fileShare.FileMove("2:\\jw\\zs\\tt.txt", "5:\\gggmmm.txt", true) << endl; 
          //cout << mm.fileShare.FileMove("2:\\jw\\zs\\tt.txt", "2:\\gggmmm.txt", true) << endl; 
          cout << mm.fileShare.FileCopy("2:\\DirFileInfoToFile.exe", "5:\\jw\\", true) << endl; 
          cout << mm.fileShare.FileCopy("2:\\600M.txt", "5:\\jw\\gggmmm600M.txt", true) << endl; 
          continue; 
          } 
          if (mFlag == 22) 
          { 
          TMemoryStream mss; 
          mss.writestring("[RSM]新春快乐!2012---win!!!"); 
          cout << "[RSM]请输入对方ARTID:"; 
          int martid; 
          cin >> martid; 
         //TARTCustom::EnableTrace(false, "abc.txt"); 
          bool mResultFlag = false; 
          TTimer zzz; 
          zzz.BeginTimer(); 
          //for (int k = 0; k < 100000; k ++) 
          { 
          //sp.reset(); 
          //sp.writeint(k); 
          //sp.writeint(glb_StreamSendCount); 
          mResultFlag = mm.RSM(martid, 0, 2, sp); 
          //mm.RPC(martid, 0, 1, sp, rp); 
          } 
          zzz.EndTimer(); 
          zzz.DispInDOS(); 
         cout << "RSM发送结果:" << mResultFlag << endl;  
          continue; 
          } 
          if (mFlag == 33) 
          { 
          cout << "[RPC]请输入对方ARTID:"; 
          int martid; 
          cin >> martid; 
         TMemoryStream mss; 
          //mss.traceInfo.AddInfo("TMyStar::开始执行RPC,哈哈,测试跟踪效果!"); 
          mss.writestring("[RPC]新春快乐!2012---win!!!"); 
         EARTRPCResult mResultFlag = rpc_Success; 
          TTimer zzz; 
          zzz.BeginTimer(); 
          for (int k = 0; k < 100000; k ++) 
          { 
          EARTRPCResult mResultFlag = mm.RPC(martid, 0, 1, mss, mss); 
          } 
          zzz.EndTimer(); 
          zzz.DispInDOS(); 
          cout << "RPC发送结果:" << TARTBaseInterpret::InterpretRPCResult(mResultFlag) << endl;  
          cout << "RPC结果包大小:" << mss.size() << endl; 
          //mss.clear();	//该语句用于测试跟踪效果! 
          if (mResultFlag == rpc_Success) cout << mss.readstring() << endl; 
          continue; 
          } 
          if (mFlag == 35) 
          { 
          vector<string> zzz; 
          zzz.push_back("nihao"); 
          zzz.push_back("hello"); 
          zzz.push_back("starsharevar"); 
          mm.serviceConcept.RegistSynShareMem(true, zzz); 
          continue; 
   
          } 
          if (mFlag == 36) 
          { 
          glb_ShareInt.data = glb_ShareInt.data + 5; 
          glb_ShareInt.SynchronizeBlockUpdate("starsharevar"); 
          } 
          if (mFlag == 38) 
          { 
          int mResultFlag = mm.serviceConcept.RegistServiceReady(true, 2887, "nihao"); 
          cout << "RegistServiceReady发送结果:" << mResultFlag << endl;  
          map<string, _RSynMemInfo> SynMemList; 
          _RSynMemInfo mNode; 
          mNode.IsAuthority = true; 
          mNode.AuthoryPriory = 3245; 
          mNode.synType = synmem_ReadWrite; 
          SynMemList.insert(pair<string, _RSynMemInfo>("starsharevar", mNode)); 
          mNode.IsAuthority = false; 
          mNode.AuthoryPriory = 8877; 
          mNode.synType = synmem_Write; 
          SynMemList.insert(pair<string, _RSynMemInfo>("nis_gg", mNode)); 
         map<string, bool> tempGlobalMap; 
          mResultFlag = mm.serviceConcept.RegistSynShareMem(true, SynMemList, tempGlobalMap); 
          cout << "RegistShareMem发送结果:" << mResultFlag << endl;  
          //mResultFlag = mm.serviceConcept.ModifyUserState(45, "一般般吧!"); 
          //cout << "Regist发送结果:" << mResultFlag << endl;  
         mResultFlag = mm.serviceConcept.ModifyUserState(2887, "一般般吧!"); 
          cout << "ModifyUserState发送结果:" << mResultFlag << endl; 
          } 
          if (mFlag == 16) 
          { 
          //glb_ShareInt.data = 54321; 
          //int mResultFlag = glb_ShareInt.SynchronizeBlockUpdate(); 
          //cout << "同步更新结果:" << mResultFlag << endl; 
          } 
          if (mFlag == 17) 
          { 
          //glb_ShareInt.BeginRead(); 
          cout << "当前的 starsharevar 中的值是:" << glb_ShareInt.data << endl; 
          //glb_ShareInt.EndRead(); 
          } 
          if (mFlag == 20) 
          { 
          vector<int> mARTIDList; 
          vector<string> mIPList; 
          vector<int> mPortList; 
          mm.ARTClientTable().SearchTable(mARTIDList, mIPList, mPortList); 
          if (mARTIDList.size() == 0) 
          { 
          cout << "[Warning]当前用户表不存在用户!您可能尚未注册!" << endl; 
          } 
          else 
          { 
          cout << "总用户数:" << mARTIDList.size() << endl; 
          for (int k = 0; k < mARTIDList.size(); k ++) 
          { 
          string mInfo; 
          EGenerationResultType mResultFlag = mm.memShare.QueryShareMemBasicList(mARTIDList[k], mInfo); 
          if (mResultFlag == egrt_Success) 
          cout << "ARTID = " << mARTIDList[k] << "  变量共享情况 = " << mInfo << endl; 
          else 
          cout << "查询失败,返回的标识!" << mResultFlag << endl; 
          } 
          //TTimer jwtimer; 
          //long long mCount = 0; 
          //jwtimer.BeginTimer(); 
          for (int k = 0; k < mARTIDList.size(); k ++) 
          { 
          if (mARTIDList[k] == mm.LocalARTID()) continue; 
          //mCount ++; 
          //string mInfo; 
          //for (int xxx = 0; xxx < 10000; xxx ++)	//进行压力测试。看看速度 
          //EGenerationResultType mResultFlag = mm.memShare.QueryShareMemBasicList(mARTIDList[k], mInfo); 
          //if (mResultFlag == egrt_Success) 
          //	cout << "ARTID = " << mARTIDList[k] << "  变量共享情况 = " << mInfo << endl; 
          //else 
          //	cout << "查询失败,返回的标识!" << mResultFlag << endl; 
          } 
          //jwtimer.EndTimer(); 
          //jwtimer.dispdos(); 
          //cout << mCount << endl; 
          } 
          } 
          if (mFlag == 21) 
          { 
          int mARTID = 2;	//暂约定STK的为2。 
          TShareInt mInt; 
          TShareString mStr; 
          mInt.Bind(mm, "testint"); 
          mStr.Bind(mm, "testansistring"); 
   
          mInt.data = 0; 
         cout << mInt.getPublishLocalShareName() << endl; 
          int mResultFlag = mInt.ShareRead(); 
          //int mResultFlag = mInt.ShareRead(mARTID); 
          cout << "MEM从ARTID=2的读取结果:" << mResultFlag << endl;  
          cout << "当前testint = " << mInt.data << endl; 
          mResultFlag = mStr.ShareRead(); 
          cout << "当前testansistring:" << mStr.data << endl; 
          //下面修改对方的值。 
          if (mResultFlag == 0)	//代表内存操作正确 
          { 
          mInt.data ++; 
          mInt.ShareWrite(); 
         //调用RPC进行问候 
          TMemoryStream zz; 
          zz.writestring("Hi, 兄弟,我是:" + jw::IntToStr(mm.LocalARTID())); 
          mResultFlag = mm.RPC(mARTID, 0, 2013, zz, zz); 
          if (mResultFlag == 0) 
          { 
          if (zz.size() > 0)	cout << "够意思,回复我说:" << zz.readstring() << endl; 
          else cout << "够意思,回复了,但是啥也没说!"  << endl; 
          } 
          else cout << "对方没反应,错误码:" << mResultFlag << endl; 
          } 
         } 
          if (mFlag == 22) 
          { 
          //调用RPC执行STK命令 
          TMemoryStream zz; 
          zz.writestring("nothing"); 
          int mResultFlag = mm.RPC(2, 0, 2014, zz, zz); 
          if (mResultFlag == 0) 
          { 
          if (zz.size() > 0) 
          { 
          const bool mIsConnectSTK = zz.readbool(); 
          if (mIsConnectSTK) cout << "对方回复,已经连接到STK!" << endl; 
          else cout << "对方回复,没有连接STK! No..." << endl; 
          } 
          else cout << "对方回复了,但是啥也没说!"  << endl; 
          } 
          else cout << "对方没反应,错误码:" << mResultFlag << endl; 
          } 
          if (mFlag == 23) 
          { 
          //GetSTKVersion / 
          //Animate Scenario/* Start 
          //Animate Scenario/* Pause 
          //Animate Scenario/* Reset 
          //GetAnimTime * 
          //GetEpoch * 
          //CheckScenario / 
          //GetScenPath * 
          //GetTimePeriod */ 
          //AllInstanceNames / 
         //调用RPC执行STK命令 
          string mSTKCommand = "GetSTKVersion /"; 
          TMemoryStream zz; 
          zz.writestring(mSTKCommand); 
         cout << "准备执行STK命令:" << mSTKCommand << endl; 
          int mResultFlag = mm.RPC(2, 0, 2012, zz, zz); 
          if (mResultFlag == 0) 
          { 
          const int mTag = zz.readint32(); 
          if (mTag == 0) cout << "执行成功!没有结果数据!" << endl;  
          else if (mTag == 1) cout << zz.readstring() << endl; 
          else cout << "对方回复标记:" << mTag << endl; 
          } 
          else cout << "对方没反应,错误码:" << mResultFlag << endl; 
          } 
          if (mFlag == 27) 
          { 
          //调用RPC进行问候 
          TMemoryStream zz; 
          zz.writestring("Hi, 兄弟,我是:" + jw::IntToStr(mm.LocalARTID())); 
          cout << "发出的流长度:" << zz.size() << endl; 
          zz.reset(); 
          string xx = zz.readstring(); 
          cout << "xx =" << xx << endl; 
          int mResultFlag = mm.RPC(2, 0, 2013, zz, zz); 
          if (mResultFlag == 0) 
          { 
          if (zz.size() > 0)	cout << "够意思,回复我说话了!" <<  zz.readstring() << endl; 
          else cout << "够意思,回复了,但是啥也没说!"  << endl; 
          } 
          else cout << "对方没反应,错误码:" << mResultFlag << endl; 
          } 
          if (mFlag == 66) 
          { 
          TMemoryStream mss; 
          //mss.writestring("[RSM]新春快乐!2012---win!!!"); 
          //TARTCustom::EnableTrace(false, "abc.txt"); 
          TTimer jwtimer; 
          cout << "进行RSM 10万次操作时间统计!" << endl; 
          jwtimer.BeginTimer(); 
          int mResultFlag = -1; 
          for (int k = 0; k < 100000; k ++) 
          { 
          //mResultFlag = mm.RSM(mIP, mPort, 0, 2, sp); 
          } 
          jwtimer.EndTimer(); 
          jwtimer.DispInDOS(); 
          cout << "RSM发送结果:" << mResultFlag << endl;  
         cout << "进行RPC 10万次操作时间统计!" << endl; 
          jwtimer.BeginTimer(); 
          for (int k = 0; k < 100000; k ++) 
          { 
          //mResultFlag = mm.RPC(mIP, mPort, 0, 2, sp, sp); 
          } 
          jwtimer.EndTimer(); 
          jwtimer.DispInDOS(); 
          cout << "RPC发送结果:" << mResultFlag << endl;  
         cout << "进行MEM 10万次操作时间统计!" << endl; 
          jwtimer.BeginTimer(); 
          for (int k = 0; k < 100000; k ++) 
          { 
          //mResultFlag = mm.RSM(mIP, mPort, 0, 2, sp); 
          //mResultFlag = glb_ShareInt.ShareRead(mIP, mPort); 
          } 
          jwtimer.EndTimer(); 
          jwtimer.DispInDOS(); 
          cout << "MEM发送结果:" << mResultFlag << endl;  
          } 
          if (mFlag == 9) 
          { 
          TPIPEComPackage sp; 
          static int ttcctt = 0; 
          sp.writestring("你好啊,我的序号是:" + TARTTools::toStr(++ttcctt) + " 认识一下吧:)"); 
          //cout << "P2P发送结果:" << mm.PIPECom.P2PSendPackage(mIP, mPort, sp) << endl; 
          { 
          vector<string> mList; 
          string mLine; 
          FILE * fp; 
          //fp = fopen("D:\\jd\\neg.seg.txt", "rb"); 
          //fp = fopen("D:\\AISAOCRL20061111毕业论文版.rar", "rb"); 
          if (false) 
          { 
          TFileStream fss("E:\\QGFX.rar", fmOpenRead); 
          TTimer jwtimer; 
          jwtimer.BeginTimer(); 
          //mm.PIPECom.P2PSendStream(mIP, mPort, fss); 
          //mm.PIPECom.PIPESendStream(mIP, mPort, 2, fss); 
          cout << "文件发送完毕!" << endl; 
          jwtimer.EndTimer(); 
          jwtimer.DispInDOS(); 
          } 
          else 
          { 
          cout << "P2P发送数据!...." << endl; 
          fp = fopen("E:\\QGFX.rar", "rb"); 
          TTimer jwtimer; 
          jwtimer.BeginTimer(); 
          int mIndex = 0; 
          const int bufferlen = 8000; 
          char buf[bufferlen]; 
          int mReadCount = 1; 
          int mSendCount = 0; 
          int cishuTotal = 0; 
          while (mReadCount > 0) 
          { 
          ++ cishuTotal; 
          mReadCount = fread(buf, sizeof(char), bufferlen, fp); 
          if (mReadCount <= 0) break; 
          sp.clear(); 
          sp.WriteBuffer(buf, mReadCount); 
          ++mSendCount; 
          //cout << "sendcount = " << mSendCount << endl; 
          if (mSendCount % 100 == 0) cout << "."; 
   
          mm.P2PSendPackage(mIP, mPort, sp); 
          if (mReadCount < bufferlen) break; 
          } 
          cout << "文件发送完毕!" << endl; 
          jwtimer.EndTimer(); 
          fclose(fp); 
          jwtimer.DispInDOS(); 
          } 
          //char ppzz; 
          //cin >> ppzz; 
          } 
          } 
          if (mFlag == 11)	//开始发送文件 
          { 
          //EARTFILEResultType mResultFlag = mm.SendFile(mIP, 2910, "D:\\abc.txt", "d:\\zzpp.txt", ""); 
          //28个字节文件传输测试。(会自动放在一个包中发送) 
          //cout << "文件传输结果类型:" << mResultFlag << endl; 
          } 
          if (mFlag == 12)	//开始大文件发送 
          { 
          //EARTFILEResultType mResultFlag = mm.SendFile(mIP, 2910, "D:\\aa.rar", "d:\\xxyyxxa.rar", ""); 
          //1.95M文件发送测试。(会分开多个包发送) 
          //cout << "文件传输结果类型:" << mResultFlag << endl; 
          } 
          if (mFlag == 13)	//给Star开始大文件发送 
          { 
          cout << "输入要发送文件ARTID端(注意:需要双方登录):"; 
          int starid; 
          cin >> starid; 
         TTimer jwtimer; 
          jwtimer.BeginTimer(); 
          //for (int k = 0; k < 20; k ++) 
          { 
          EARTFILEResultType mResultFlag = mm.SendFile(starid, "D:\\testaa.rar", "d:\\xxyyxxa.rar", ""); 
          //EARTFILEResultType mResultFlag = mm.SendFile(starid, "D:\\aa.rar", "d:\\xxyyxxa.rar", ""); 
          //EARTFILEResultType mResultFlag = mm.SendFile(starid, "E:\\QGFX.rar", "d:\\xxyyxxa.rar", ""); 
          //40M文件测试。(进行大规模压力测试、和测试自动连接Star的技术) 
          //EARTFILEResultType mResultFlag = mm.SendFile(starid, "E:\\ISO\\office_2007\\office2007.iso", "D:\\xxx.iso"); 
          cout << "文件传输结果类型:" << mResultFlag << endl; 
          //cout << "xx= " << xx << "yy = " << yy << endl; 
          } 
          jwtimer.EndTimer(); 
          jwtimer.DispInDOS(); 
          } 
          if (mFlag == 55) 
          { 
          cout << "通信统计信息如下!" << endl; 
          cout << mm.getComStat().DispStatInfo() << endl; 
          //cout << "xx= " << xx << "yy = " << yy << endl; 
          } 
          } 
          if (xxyy == 1) 
          fclose(desFile); 
          mm.Close(); 
          cout << "总字节:" << recvFileSize << endl; 
          cout << "现在内存包申请数量:" << TPIPEComPackagePool::GetAllocateTotalCount() << endl; 
} 
		 
        void E013_Demo() 
          { 
          Demo_ARTClient();
           
        } 
}; //end namespace __Test_ARTStar__  |