#pragma once #include "TCPClientSocket.h" #include #include struct per_user_data; class CSendTask; class CSuperTCPClient : public CTCPClientSocket { public: CSuperTCPClient(); ~CSuperTCPClient(); virtual void Close() override; //重发, 有单独线程调用 BOOL ReSend(); void Insert(LPBYTE pPack, int nPackLen, uint32_t packno, E_ZL_PROTOCAL protocal, bool); inline void SetFather(per_user_data* a) { m_pFather = a; } protected: BOOL RecvPack(uint32_t packno, E_ZL_PROTOCAL protocal); std::map m_mapSendCout; protected: BOOL HandleSubNotify(LPHJDATAHEAD2 lpHead, char* json, int json_len); protected: virtual void ProcessPack(LPBYTE pPack, int nLen) override; virtual void OnConnect(int nErrorCode) override; virtual void OnClose(int nErrorCode) override; private: per_user_data* m_pFather = nullptr; std::list m_task; std::mutex m_mtx; };