ClientProcess.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*************************************************************
  2. /* Copyright (C), 2014-2020, lyfz. Co., Ltd.
  3. /* 文件名: CClientProcess.h
  4. /* 作者: Jeff.w
  5. /* 创建日期: 2014-08-07
  6. /* 版本号: V1.0
  7. /* 描述: 核心层底,客户端与服务端通信接口
  8. /* 其它:
  9. /* 主要类模块:
  10. /* 历史修改记录:
  11. /* 作者 时间 版本 描述
  12. /* Jeff.w 14/08/07 1.0 创建这个模块
  13. ***************************************************************/
  14. #ifndef __ICLIENT_IMPL_HEADER__
  15. #define __ICLIENT_IMPL_HEADER__
  16. #pragma once
  17. #include <afxwin.h>
  18. #include <atlbase.h>
  19. #include "Client2SrvType.h"
  20. #include "CritSection.h"
  21. #include "SocketHandle.h"
  22. #include "SocketClientImpl.h"
  23. class CClientProcess : public ISocketClientHandler
  24. {
  25. typedef SocketClientImpl<ISocketClientHandler> CSocketClient;
  26. friend CSocketClient;
  27. public:
  28. CClientProcess();
  29. virtual ~CClientProcess();
  30. void StartReConnectSrvThread();
  31. static DWORD WINAPI ReConnectSrvThread(LPVOID pInstance);
  32. protected:
  33. virtual void OnThreadBegin(CSocketHandle* pSH);
  34. virtual void OnThreadExit(CSocketHandle* pSH);
  35. virtual void OnDataReceived(CSocketHandle* pSH, const BYTE* pbData, DWORD dwCount, const SockAddrIn& addr);
  36. virtual void OnConnectionDropped(CSocketHandle* pSH);
  37. virtual void OnConnectionError(CSocketHandle* pSH, DWORD dwError);
  38. protected:
  39. int m_nMode; // IPV4 或 IPV6
  40. int m_nSockType; // UDP 或 TCP
  41. // 连接的服务器地址;
  42. TCHAR m_SvrAddr[MAX_PATH];
  43. // 连接的服务器端口;
  44. TCHAR m_SvrPort[MAX_PATH];
  45. // 线程句柄;
  46. HANDLE m_hReConnectSrvThreadHandle;
  47. // 线程退出句柄;
  48. HANDLE m_hRunObject;
  49. void _cdecl AppendText(LPCTSTR lpszFormat, ...);
  50. void GetAddress(const SockAddrIn& addrIn, CString& rString) const;
  51. bool GetDestination(SockAddrIn& addrIn) const;
  52. bool SetupMCAST();
  53. public:
  54. BOOL m_bRecevie; // 是否已接收服务器的返回;
  55. BOOL m_bStopbeat; // 是否心跳包;
  56. BOOL m_bSocket; // 套接字是否打开;
  57. CSocketClient m_SocketClient;
  58. BOOL Initialize();
  59. BOOL ConnectServer(LPCTSTR strAddr, LPCTSTR strPort);
  60. void net_CloseSocket();
  61. void SendMsg(void *pMsg,const int nLen);
  62. INT Send(IN TheProbody& tpbody, IN const int& nTimeout);
  63. BOOL SolveError();
  64. public:
  65. // .用户登陆服务器请求;
  66. BOOL LoginRemoteSvrRequest();
  67. BOOL LoginLocalSvrRequest();
  68. // .用户登陆服务请求,服务器的响应返回;
  69. void LoginRemoteSvrResponse(void *pLoginResult);
  70. void LoginLocalSvrResponse(void *pLoginResult);
  71. // .客户端登陆后,聊天数据请求;
  72. BOOL ChatRemoteSvrMessageRequest(void *szDataBuf, int nDataLen);
  73. BOOL ChatLocalSvrMessageRequest(void *szDataBuf, int nDataLen);//ChatLocalSvrMessageRequest
  74. // .客户端登陆后,聊天数据请求,服务端的响应返回;
  75. void ChatRemoteSvrMessageResponse(void *pResponse);
  76. void ChatLocalSvrMessageResponse(void *pResponse);
  77. public:
  78. DWORD m_dwCurRecive; // 当前接收的字节;
  79. DWORD m_dwSumRecive; // 总接收的字节;
  80. BYTE *m_pPendingbuf; // 接收的缓存;
  81. DWORD m_dwPendingSize;
  82. BYTE m_byPendingbuf[2];
  83. };
  84. #endif