#pragma once #include #include #include "SocketHandle.h" #include "SocketClientImpl.h" #include "head.h" class CClientSocket:public ISocketClientHandler { typedef SocketClientImpl CSocketClient; friend CSocketClient; protected: // SocketClient Interface handler virtual void OnThreadBegin(CSocketHandle* pSH); virtual void OnThreadExit(CSocketHandle* pSH); virtual void OnDataReceived(CSocketHandle* pSH, const BYTE* pbData, DWORD dwCount, const SockAddrIn& addr); virtual void OnConnectionDropped(CSocketHandle* pSH); virtual void OnConnectionError(CSocketHandle* pSH, DWORD dwError); protected: HANDLE m_hSemNet; CRITICAL_SECTION m_csReadFinished; //CRITICAL_SECTION m_csWrFinished; private: bool GetDestination(SockAddrIn& addrIn) const; int ReadDataRes(char *pTmpData); int WriteDataRes(char *pData); int ReadDataResError(char *pData); int WriteDataResError(char *pData); public: int ClientSend(char* pMsg, int iLen); BOOL Connection(LPCTSTR strAddr, LPCTSTR strPort); void DisConnection(void); bool SetupMCAST(); void GetAddress(const SockAddrIn& addrIn, CString& rString) const; void ProcessData(CSocketHandle *pSH, const BYTE* pData, DWORD nLen); int OnCmdProcess(void *pData, int iDataLen); public: int WorkMain(REQUESTPARAM SetBasePara, int iVarID); int RequestStatus(REQUESTPARAM SetBasePara, int iVarID); public: CClientSocket(void); ~CClientSocket(void); public: int m_nSockType; //UDP »ò TCP int m_nMode; //IP4 »ò IP6 BOOL m_bSocket; CSocketClient m_SocketClient; public: RESPONSE_STRUCT m_structResponse; REQUESTWRPARAM m_RequestWrParam; };