41 lines
1.5 KiB
C
41 lines
1.5 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
class CCustomJXClientSocket :
|
|||
|
|
public CCustomClientSocket
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
typedef CCustomClientSocket Inherited;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//按通信协议申请一份发送数据包,nCmd是通信消息号,
|
|||
|
|
//数据包填充完毕后需要调用flushProtoPacket提交到发送队列
|
|||
|
|
CDataPacket& allocProtoPacket(const jxSrvDef::INTERSRVCMD nCmd);
|
|||
|
|
|
|||
|
|
//提交发送数据包到发送缓冲,会自动计算数据长度并向数据包的通信协议头部分写入长度值
|
|||
|
|
VOID flushProtoPacket(CDataPacket& packet);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
/*** 子类需覆盖的函数集 ***/
|
|||
|
|
/* 处理单个通信数据包
|
|||
|
|
* nCmd 通信消息命令
|
|||
|
|
* inPacket 已经读取出通信命令的数据包,数据包的读取位置指向命令数据后的内容
|
|||
|
|
*/
|
|||
|
|
virtual VOID OnDispatchRecvPacket(const jxSrvDef::INTERSRVCMD nCmd, CDataPacketReader &inPacket) = 0;
|
|||
|
|
|
|||
|
|
/*** 下列函数为子类可能有必要覆盖的函数集 ***/
|
|||
|
|
/* ★查询本地服务器的类型,以便正确的发送注册数据 */
|
|||
|
|
virtual jxSrvDef::SERVERTYPE getLocalServerType() = 0;
|
|||
|
|
|
|||
|
|
/* ★查询本地服务器的名称,以便正确的发送注册数据 */
|
|||
|
|
virtual LPCSTR getLocalServerName() = 0;
|
|||
|
|
/* ★查询本地服务器ID,以便正确的发送注册数据,默认的返回值是0 */
|
|||
|
|
virtual int getLocalServerIndex();
|
|||
|
|
|
|||
|
|
VOID SendKeepAlive();//heart tick
|
|||
|
|
protected:
|
|||
|
|
/*** 覆盖父类的网络数据包处理函数以便实现通信协议的数据包解析 ***/
|
|||
|
|
VOID ProcessRecvBuffers(PDATABUFFER pDataBuffer);
|
|||
|
|
/* 发送注册服务器的消息 */
|
|||
|
|
VOID SendRegisteClient();
|
|||
|
|
};
|