算法描述: 定义的基类,提供了数据的一种统一的接口,其派生类再对其虚函数进行重载,实现相应的功能。在数据的打包过程中,对字符串的打包原理为:先存入串长度,再存入串。串的长度,采用的是2个字节的WORD类型,已经足够满足要求了。打包时,按照某一顺序,对其进行数据的存入串中,解开时,以相同的顺序进行还原即可。其中,类CModifyPersonPI的算法与其它类不大一样,因为它的成员中有一个位掩Mask成员,只有被选中的成员,才会打包入串。 发送数据的基类: class CData { public: CData(); virtual ~CData(); char szBuf[DataBufLength]; 需发送的数据串 int num; 记录数据的字节数 BYTE index; 消息的编号 DWORD MyId; 发送者自己的帐号 DWORD This; 用来唯一标识这一个发送数据的(在检验回应消息时有用) virtual void PackToBuf(); 把index,myid,this这几个需要传送的数据存于szBuf中,并设定num 和bp的值 virtual BOOL LoadFromBuf(); 把index,myid,this 这几个的数据从szBuf中提取出来,失败返回FALSE UINT tarIP; 发送数据的目的IP地址(已经转化为4字节整形) UINT nPort; 发送数据的目的端口号 protected: int BP; //指示执行了PackToBuf或LoadFromBuf后,当前数据指指针指向的位置,在子类中有用 };
消息类CMsg1 class CMsg1 : public CData { public: virtual BOOL LoadFromBuf(); 重载基类的函数 完成增加数据的打包 virtual void PackToBuf(); 重载基类的函数 完成增加数据的提取 CMsg1(); virtual ~CMsg1(); DWORD FriendId; 对方的帐号 CTime Time; 数据发送的时间 CString Msg; 消息内容 };
消息类CMsg2 class CMsg2 : public CData { public: virtual BOOL LoadFromBuf(); 重载基类的函数 完成增加数据的打包 virtual void PackToBuf(); 重载基类的函数 完成增加数据的提取 CMsg2(); virtual ~CMsg2(); CArray<DWORD,DWORD> aFriendId; 朋友帐号的数组 CTime Time; 数据发送的时间 CString Msg; };
消息类CMsg3 class CMsg3 : public CData { public: virtual BOOL LoadFromBuf(); 重载基类的函数 完成增加数据的打包 virtual void PackToBuf(); 重载基类的函数 完成增加数据的提取 CMsg3(); virtual ~CMsg3(); DWORD Value; &nb
首页 上一页 7 8 9 10 11 12 13 下一页 尾页 10/17/17