/************************************************************* /* Copyright (C), 2014-2020, lyfz. Co., Ltd. /* �ļ���: IClientImpl.h /* ����: Jeff.w /* ��������: 2014-08-07 /* �汾��: V1.0 /* ����: ���IJ��,�ͻ���������ͨ�Žӿ� /* ����: /* ��Ҫ��ģ��: /* ��ʷ�ļ�¼: /* ���� ʱ�� �汾 ���� /* Jeff.w 14/08/07 1.0 �������ģ�� ***************************************************************/ #ifndef __ICLIENT_IMPL_HEADER__ #define __ICLIENT_IMPL_HEADER__ #pragma once #include <afxwin.h> #include <atlbase.h> //#pragma warning(push) //#pragma warning(disable:4995) //#pragma warning(pop) #include "CritSection.h" #include "SocketHandle.h" #include "SocketClientImpl.h" #include "Global.h" // �궨��:�������ݰ��ܳ���; #define CALCDATALEN(x) (x+sizeof(STProtocolheader)+sizeof(STProtocoltail)) //const int TCPCLIENTNUM = 10; class IClientImpl : public ISocketClientHandler { typedef SocketClientImpl<ISocketClientHandler> CSocketClient; friend CSocketClient; public: IClientImpl(); ~IClientImpl(); //static IClientImpl* GetInstancePtr( int iTCPIndex ); void StartReConnectSrvThread(); static DWORD WINAPI ReConnectSrvThread(LPVOID pInstance); protected: 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: CString m_strPort; int m_nMode; // IPV4 �� IPV6 int m_nSockType; // UDP �� TCP // �߳̾��; HANDLE m_hReConnectSrvThreadHandle; // �߳��˳����; HANDLE m_hRunObject; //static IClientImpl *m_pTcpClient[TCPCLIENTNUM]; void _cdecl AppendText(LPCTSTR lpszFormat, ...); void GetAddress(const SockAddrIn& addrIn, CString& rString) const; bool GetDestination(SockAddrIn& addrIn) const; bool SetupMCAST(); // Jeff.�����о������Ĵ�������; // ���쳣����Ҫ��������,��1�����ڳ��ֶ����쳣��ʱ,��Ҫ����������; //unsigned int VerityIntegrityPacket(IN void *pIntegrityPacket,unsigned int nPacketSize); void ToprocessRecivebuf(IN CSocketHandle *sockHandle, IN const BYTE* pReceivebuf, IN DWORD dwReceiveSize); int OnIntegrityPacket(IN CSocketHandle *sockHandle, IN void *pIntegrityPacket); public: BOOL m_bStopbeat; // �Ƿ�������; BOOL m_bSocket; CSocketClient m_SocketClient; BOOL Initialize(); BOOL ConnectServer(LPCTSTR strAddr, LPCTSTR strPort); void DisConnectServer(); void SendMsg(void *pMsg,const int nLen); void SendFile(LPCTSTR lpzFileName,LPCTSTR strPort); }; #endif