Files
wnmj/Classes/Network/SocketEngine.h

82 lines
2.5 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef _SocketEngine_H_
#define _SocketEngine_H_
#include "ClientNetDelegate.h"
#include "ISocketEngineSink.h"
// //////////////////////////////////定义/////////////////////////////////////////////////////
static const bool SOCKET_CHECK = true;
/** 数据包最大大小 **/
static const int SIZE_TCP_BUFFER = 20480;
/** 头包大小 **/
static const int SIZE_PACK_HEAD = 8;
/** 包头信息大小 **/
static const int SIZE_PACK_INFO = 4;
/** 命令信息大小 **/
static const int SIZE_PACK_COMMAND = 4;
/** 附加数据最大大小 **/
static const int SIZE_PACK_DATA = SIZE_TCP_BUFFER - SIZE_PACK_INFO - SIZE_PACK_COMMAND;
typedef unsigned char uint8;
class CSocketEngine : public cocos2d::ClientNetDelegate
{
public:
CSocketEngine();
virtual ~CSocketEngine();
//////////////////////////////////////////////////////////////////////////
// 接口ISocketEngine
public:
/** 设置Socket接收器 */
virtual void setSocketEngineSink(ISocketEngineSink* pISocketEngineSink);
/** 链接网络 **/
virtual bool connect(const char* url, int port);
/** 关闭网络 **/
virtual bool disconnect();
/** 发送数据 **/
virtual bool send(int main, int sub, void* data, int dataSize);
/** 状态判断 **/
virtual bool isAlive();
//////////////////////////////////////////////////////////////////////////
// 接口ClientNetDelegate
public:
virtual void onConnected();
virtual void onConnectTimeout();
virtual void onDisconnected();
virtual void onExceptionCaught(CCSocketStatus eStatus);
virtual void onMessageReceived(char* pData, unsigned int iLenght);
//////////////////////////////////////////////////////////////////////////
// 辅助函数
private:
void initValue();
private:
// 接收处理模块
ISocketEngineSink* mISocketEngineSink;
//////////////////////////////////////////////////////////////////////////
// 数据缓冲
private:
uint8* mTempBuf;
unsigned int temp_size_;
//加密数据
protected:
//计数变量
unsigned int m_dwSendPacketCount; //发送计数
unsigned int m_dwRecvPacketCount; //接受计数
public:
//加密数据
unsigned short EncryptBuffer(unsigned char * pcbDataBuffer, unsigned short wDataSize, unsigned short wBufferSize);
//解密数据
unsigned short CrevasseBuffer(unsigned char pcbDataBuffer[], unsigned short wDataSize);
//映射发送数据
inline unsigned char MapSendByte(unsigned char const cbData);
//映射接收数据
inline unsigned char MapRecvByte(unsigned char const cbData);
};
#endif // _SocketEngine_H_