82 lines
2.5 KiB
C++
82 lines
2.5 KiB
C++
#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_
|