📄 dsp_sdk_.txt
字号:
static bool RegisterAct(const char* classID,DSPGETOBJFUNC(dspActFun),DWORD dwData=0);
static SOCKET ConnectTo(const char *lpSrvName,int nSrvPort,bool bInternet=true,int nRetryCount=5);
static SOCKET GetUDPSocket(int nListenPort=-1,bool bInternet=true);
static SOCKET GetTCPSocket(int nListenPort=-1,bool bInternet=true);
static bool GetAddrByName(const char *lpName,WORD port,sockaddr_in& addr);
static void GetAddrByIP(const char *lpIP,WORD port,sockaddr_in& addr,bool bInternet=true);
static int WaitRecvUDP(SOCKET sock,char *lpUDPBuff,int nUDPBuffLen,struct sockaddr_in& from,int nTimeoutSec=30);
static DWORD GetFileSize(const char* lpFilename);
static DWORD CreateNullFile(const char* lpFilename,int nSize,bool bAppend=true);
static void SafeRelease();
static inline BOOL OpenIfstreamForRead(ifstream& ifs,const char* const lpFileName,int nMode=0,int nShareMode=filebuf::openprot)
{ ifs.open(lpFileName,ios::in|ios::binary|ios::nocreate|nMode,nShareMode);
return ifs.is_open();
};
static inline BOOL OpenOfstreamForWrite(ofstream& ofs,const char* const lpFileName,int nMode=0,int nShareMode=filebuf::sh_write||filebuf::sh_read)
{ ofs.open(lpFileName,ios::out|ios::binary|nMode,nShareMode);
return ofs.is_open();
};
};
DSPACT类定义
class AFX_EXT_CLASS DSPACT
{
public:
DSPACT(){};
virtual ~DSPACT(){};
virtual char * GetClassID()=0;
virtual bool IsKindOf(char* lpClassName)=0;
protected:
friend struct DSP::_DSPPACKET;
virtual void Init(BYTE byType){};
virtual BYTE GetClassLevel(){ return 0; };
virtual bool AttrSectRecv(BYTE byClassLevels,BYTE byAttrNo,const char* const lpBuff,DWORD dwLen,bool bLast);
virtual bool AttrSectSend(BYTE byClassLevels,BYTE byAttrNo,char** const lpBuff,DWORD& dwLen,bool& bContinue);
virtual bool Serialize(BYTE byClassLevels,BYTE byAttrNo,DSP::_DSPPACKET &dsp);
virtual bool UnSerialize(BYTE byClassLevels,BYTE byAttrNo,DSP::_DSPPACKET &dsp,DWORD dwLen);
virtual bool Compress(char** const lpBuff,DWORD& dwLen);
virtual bool UnCompress(char** const lpBuff,DWORD dwLen,char* lpUnBuff,WORD& wUnLen,bool bStart);
};
DSP::_DSPPACKET结构说明
类型:构造函数
定义:_DSPPACKET(bool& bRun)
描述:创建_DSPPACKET实例时,必需传递一个bool型变量,通过这个布尔变量,可以随时终止序列化和反序列化过程。
类型:属性
定义:bool& bKeepRun
描述:是否继续运行,通过这个布尔变量,可以随时中止序列化或反序列化过程
类型:属性
定义:timeval Timeout
描述:如果序列化的数据流需要通过Socket来传送,或者反序列化的数据流来自Socket,则该属性有效。
该属性设定了接收或传送时的Socket超时时间,如果Socket超时,则序列化或反序列化失败。
类型:属性
定义:DWORD dwData
描述:在反序列化成功后,该变量内保存了RegisterAct()方法注册类时传递的dwData参数的值。
类型:方法
定义:void Empty()
参数:无
描述:清空_DSPPACKET结构,为下一次反序列化作准备。序列化对象时不需要调用该方法。连续进行反序列化时不需要在每次反序列化前都调用该方法。
类型:方法
定义:inline void SetParameter(BOOL bCompress=FALSE,BOOL bVerifyCRC=TRUE,BYTE byInitType=0)
参数:bCompress -- 是否压缩数据,如果值为TRUE,只有重载DSPACT::Compress()方法才有效。
bVerifyCRC-- 是否进行CRC校验。不进行CRC校验时,执行速度会稍快一些。
byInitType-- 对象反序列化完成后,调用对象的Init()方法时传递的参数。
取值为[0..15],0表示在反序列化完成后,不调用对象的Init()方法。
描述:设置序列化时的参数,一次设置会一直有效,直到重新设置。
类型:方法
定义:inline _DSPERROR* GetLastError()
参数:无
描述:得到最近的一次错误描述
类型:方法
定义:DSPACT* ReadObject(SOCKET sock,DSPACT* pAct=NULL)
参数:sock -- 接收序列化数据的SOCKET
pAct -- 读取一个指定的对象,并将数据读到该对象中。如果值为NULL,表示反序列化为序列化时的对象。
返回:当pAct==NULL时,如果反序列化成功,则返回一个DSPACT的派生类对象的指针。失败时,返回NULL。
当pAct!=NULL时,如果读取的数据反序列化时不是指定的类的对象或反序列化过程失败,则返回NULL。
描述:调用该方法,从SOCKET中读取已序列化的数据,然后反序列化数据流成对象。
注意:反序列化成功时,返回一个对象的指针,该对象在堆中被创建,返回后DSP并没有再保存该对象的指针,因此,必需注意在反序列化成功时,应该接收该指针,在对象使用完后,必需使用delete释放对象的资源。
类型:方法
定义:DSPACT* ReadObject(ifstream& ifs,DSPACT* pAct=NULL)
参数:ifs -- 保存有序列化数据的ifstream对象
pAct -- 读取一个指定的对象,并将数据读到该对象中。如果值为NULL,表示反序列化为序列化时的对象。
返回:当pAct==NULL时,如果反序列化成功,则返回一个DSPACT的派生类对象的指针。失败时,返回NULL。
当pAct!=NULL时,如果读取的数据反序列化时不是指定的类的对象,则返回NULL。
描述:调用该方法,将从文件输入流中读取已序列化的数据,然后反序列化数据流成对象。
注意:反序列化成功时,返回一个对象的指针,该对象在堆中被创建,返回后DSP并没有再保存该对象的指针,因此,必需注意在反序列化成功时,应该接收该指针,在对象使用完后,必需使用delete释放对象的资源。
类型:方法
定义:bool WriteObject(SOCKET sock,DSPACT* const pAct)
参数:sock -- 传送序列化数据的SOCKET
pAct -- 需要序列化的对象的指针,值不可以为NULL。
返回:true -- 序列化并且传送序列化数据成功;
false -- 序列化过程或传送序列化数据时发生了错误,调用GetLastError()可以得到错误描述。
描述:调用该方法,将序列化指定的对象,然后通过SOCKET传送序列化后的数据,序列化和传送是一个阻塞的过程。
类型:方法
定义:bool WriteObject(ofstream& ofs,DSPACT* const pAct)
参数:ofs -- 记录序列化数据的ofstream对象
pAct -- 需要序列化的对象的指针,值不可以为NULL。
返回:true -- 序列化并且传送序列化数据成功;
false -- 序列化过程或传送序列化数据时发生了错误,调用GetLastError()可以得到错误描述。
描述:调用该方法,将序列化指定对象后的数据记录在ofstream对象所打开的文件中。
类型:方法
定义:bool Read(char& attr)
参数:attr -- 一个字符型变量。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的char型变量中
类型:方法
定义:bool Read(BYTE& attr)
参数:attr -- 一个无符号字符型变量。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的BYTE型变量中
类型:方法
定义:bool Read(short& attr)
参数:attr -- 一个双字节有符号变量。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的short型变量中
类型:方法
定义:bool Read(WORD& attr)
参数:attr -- 一个双字节无符号型变量。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的WORD型变量中
类型:方法
定义:bool Read(int& attr)
参数:attr -- 一个4字节有符号变量。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的int型变量中
类型:方法
定义:bool Read(DWORD& attr)
参数:attr -- 一个4字节无符号变量。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的DWORD型变量中
类型:方法
定义:bool Read(bool& attr)
参数:attr -- 一个bool型变量
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的布尔型变量中
类型:方法
定义:bool Read(std::string& attr,DWORD nLen)
参数:attr -- 一个string型字符串变量。
nLen -- 反序列化的属性的长度,这个长度值是UnSerialize()方法的参数。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的字符串变量中
类型:方法(只有在Window系统下有效)
定义:bool Read(CString& attr,DWORD nLen)
参数:attr -- 一个CString型变量。
nLen -- 反序列化的属性的长度,这个长度值是UnSerialize()方法的参数。
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的字符串变量中
类型:方法
定义:bool Read(char* const pAttr,DWORD nLen)
参数:attr -- 一个指向字符型缓冲区指针
nLen -- 缓冲区的长度,这个长度是缓冲的实际长度,不是UnSerialize()方法的参数
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的二进制流缓冲区变量中
类型:方法
定义:bool Read(DSPACT& attr)
参数:attr -- 一个基类为DSPACT的类的对象
返回:true -- 反序列化属性值已经完成,属性的值已经被记录到变量中。
false -- 反序列化属性值还没有完成,属性的值不可用。
描述:反序列化数据到对象中的一个DSPACT派生类的变量中
类型:方法
定义:void Write(int attr)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -