组件

PduSocket.h 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*************************************************************************
  2. 【文件名】 PduSocket.h
  3. 【功能模块和目的】 SOCKET通讯实体类头文件
  4. 【开发者及日期】 郑石诺 2015/03/19
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include "PduLinkInc.h"
  11. class CPduSocketMonitor;
  12. class CPduMain;
  13. class CPduEntity;
  14. /*************************************************************************
  15. 【类名】 CPduSocket
  16. 【功能】
  17. 【接口说明】 SOCKET通讯实体类
  18. 【开发者及日期】 郑石诺 2015/03/19
  19. 【版本】 V1.0.0
  20. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  21. 【更改记录】
  22. *************************************************************************/
  23. class CPduSocket : public CAsyncSocket
  24. {
  25. private:
  26. CPduMain* m_pParent; // SOCKET通讯主控类
  27. CPduSocketMonitor* m_pSocketMonitor; // SOCKET监测控制类实例
  28. // SOCKET读取相关变量
  29. USHORT m_nHasRead; // 已读取的数据缓冲区长度
  30. UCHAR m_szPdu[PDU_HEAD_LEN + PDU_MAX_DATA_LEN]; // 已读取的缓冲区内容
  31. private:
  32. BOOL __SendBuf(UCHAR a_szBuf[], UINT a_nBufLen); // 发送数据缓冲区
  33. void __InitData(); // 清空SOCKET数据缓冲区
  34. public:
  35. CPduSocket(CPduMain* a_pParent, PDU_LINK_TYPE a_nLinkType, bool IsAutoReconnect);
  36. virtual ~CPduSocket();
  37. // SOCKET相关操作
  38. BOOL ConnectToServer(const CString& a_strFarIp,
  39. int a_nFarPort,
  40. PDU_DEV_TYPE a_nFarType,
  41. int a_nFarId); // 连接到SERVER端
  42. BOOL Regist(void); // 注册连接
  43. BOOL Monitor(void); // 心跳监测
  44. BOOL SendDirectly(CPduEntity* a_pCmd); // 发送PDU命令
  45. BOOL SendPdu(CPduEntity* a_pCmd); // 发送PDU命令
  46. // 属性
  47. void GetPeerLinkInfo(CString& a_strIp, int& a_nPort); // 对端IP、端口号
  48. void GetPeerDevInfo(PDU_DEV_TYPE& a_nDevType, int& a_nDevId); // 对端设备类型、ID
  49. void SetPeerDevInfo(PDU_DEV_TYPE a_nDevType, int a_nDevId);
  50. PDU_LINK_TYPE GetLinkType(); // 得到连接类型
  51. void GetLocalInfo(PDU_DEV_TYPE& a_nDevType, int& a_nDevId); // 获取PDU本端设备类型及ID
  52. // SOCKET重载函数
  53. virtual void OnConnect(int nErrorCode);
  54. virtual void OnClose(int nErrorCode);
  55. virtual void OnReceive(int nErrorCode);
  56. virtual void OnSend(int nErrorCode);
  57. // 事件响应处理
  58. void OnConnEstablished(); // 连接建立
  59. void OnConnFailed(); // 连接失败/断开
  60. void OnConnRegistOK(); // 注册成功
  61. void OnConnRegistFailed(); // 注册失败
  62. };