|
- #ifndef _TCP_SOCKET_SERVICE_H_
- #define _TCP_SOCKET_SERVICE_H_
-
- #include "KernelEngineHead.h"
- #include "QueueService.h"
- #include "QueueServiceEvent.h"
- #include "MyEncrypt.h"
-
- //网络状态
- #define SOCKET_STATUS_IDLE 0 //空闲状态
- #define SOCKET_STATUS_WAIT 1 //等待状态
- #define SOCKET_STATUS_CONNECT 2 //连接状态
-
- //连接错误
- #define CONNECT_SUCCESS 0 //连接成功
- #define CONNECT_FAILURE 1 //连接失败
- #define CONNECT_EXCEPTION 2 //参数异常
- #define CONNECT_PROXY_FAILURE 3 //连接成功
- #define CONNECT_PROXY_USER_INVALID 4 //用户无效
- //
-
- //动作定义
- #define QUEUE_SEND_REQUEST 1 //发送标识
- #define QUEUE_CONNECT_REQUEST 2 //发送标识
- #define QUEUE_SAFE_CLOSE 3 //安全关闭
- #define QUEUE_DETECT_SOCKET 4 //检测连接
-
-
- class CTCPSocketService : public CWnd, public ITCPSocketService, public IQueueServiceSink
- {
- private:
- bool m_bService; //服务标志
- CQueueServiceEvent m_QueueServiceEvent; //通知组件
- CQueueService m_QueueService; //队列对象
-
- //加密数据
- protected:
- BYTE m_cbSendRound; //字节映射
- BYTE m_cbRecvRound; //字节映射
- DWORD m_dwSendXorKey; //发送密钥
- DWORD m_dwRecvXorKey; //接收密钥
-
- CMyEncrypt m_MyEncrypt;
-
- private:
- bool m_bSuccess; //连接成功
-
- private:
- DWORD m_dwServerIP; //连接的IP
- WORD m_wPort; //链接端口
- TCHAR m_szIp[72];
- //内核变量
- protected:
- SOCKET m_hSocket; //连接句柄
- WORD m_wServiceID; //服务ID
- BYTE m_cbSocketStatus; //连接状态
-
- //计数变量
- protected:
- DWORD m_dwSendTickCount; //发送时间
- DWORD m_dwRecvTickCount; //接收时间
- DWORD m_dwSendPacketCount; //发送计数
- DWORD m_dwRecvPacketCount; //接受计数
-
- //接收变量
- protected:
- WORD m_wRecvSize; //接收长度
- BYTE m_cbRecvBuf[SOCKET_TCP_BUFFER * 10]; //接收缓冲
-
- public:
- CTCPSocketService(void);
- ~CTCPSocketService(void);
-
-
- //基础接口
- public:
- //释放对象
- virtual VOID Release()
- {
- if (IsValid()) delete this;
- }
- //是否有效
- virtual bool IsValid()
- {
- return AfxIsValidAddress(this, sizeof(CTCPSocketService)) ? true : false;
- }
- //接口查询
- virtual void * QueryInterface(const IID & Guid, DWORD dwQueryVer);
-
- //服务接口
- public:
- //启动服务
- virtual bool StartService();
- //停止服务
- virtual bool ConcludeService();
-
- //队列接口
- public:
- //通知回调函数
- virtual void OnQueueServiceSink(WORD wIdentifier, void * pBuffer, WORD wDataSize);
-
- //配置接口
- public:
- //配置函数
- virtual bool SetServiceID(WORD wServiceID);
- //设置接口
- virtual bool SetTCPSocketEvent(IUnknownEx * pIUnknownEx);
-
-
- //功能接口
- public:
- //关闭连接
- virtual bool CloseSocket();
- //连接地址
- virtual bool Connect(DWORD dwServerIP, WORD wPort);
- //连接地址
- virtual bool Connect(LPCTSTR szServerIP, WORD wPort);
- //发送函数
- virtual bool SendData(WORD wMainCmdID, WORD wSubCmdID);
- //发送函数
- virtual bool SendData(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
-
- //辅助函数
- protected:
- //地址解释
- DWORD TranslateAddr(LPCTSTR pszServerAddr);
- //发送数据
- bool SendDataBuffer(void * pBuffer, WORD wSendSize);
- //关闭连接
- VOID CloseSocket(BYTE cbShutReason);
-
- //加密函数
- protected:
- //解密数据
- WORD CrevasseBuffer(BYTE cbDataBuffer[], WORD wDataSize);
- //加密数据
- WORD EncryptBuffer(BYTE cbDataBuffer[], WORD wDataSize, WORD wBufferSize, BYTE cbDataKind);
-
- //内联函数
- private:
- //字节映射
- inline WORD SeedRandMap(WORD wSeed);
- //发送映射
- inline BYTE MapSendByte(BYTE cbData);
- //接收映射
- inline BYTE MapRecvByte(BYTE cbData);
- //发送映射
- inline BYTE MapSendByteEx(BYTE cbData);
- //接收映射
- inline BYTE MapRecvByteEx(BYTE cbData);
- //消息映射
- protected:
- //网络消息
- LRESULT OnSocketNotify(WPARAM wParam, LPARAM lParam);
-
- //消息函数
- protected:
- //网络读取
- LRESULT OnSocketNotifyRead(WPARAM wParam, LPARAM lParam);
- //网络发送
- LRESULT OnSocketNotifyWrite(WPARAM wParam, LPARAM lParam) {};
- //网络关闭
- LRESULT OnSocketNotifyClose(WPARAM wParam, LPARAM lParam);
- //网络连接
- LRESULT OnSocketNotifyConnect(WPARAM wParam, LPARAM lParam);
-
- DECLARE_MESSAGE_MAP()
-
- };
-
- #endif //_TCP_SOCKET_SERVICE_H_
|