算法描述:
 定义的基类,提供了数据的一种统一的接口,其派生类再对其虚函数进行重载,实现相应的功能。在数据的打包过程中,对字符串的打包原理为:先存入串长度,再存入串。串的长度,采用的是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
免费vc++网上寻呼QICQ源代码(附带文档)(十)由毕业论文网(www.huoyuandh.com)会员上传。

