算法描述:
定义的基类,提供了数据的一种统一的接口,其派生类再对其虚函数进行重载,实现相应的功能。在数据的打包过程中,对字符串的打包原理为:先存入串长度,再存入串。串的长度,采用的是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)会员上传。