#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_