RCPServer.h
上传用户:hyz2004817
上传日期:2022-03-30
资源大小:226k
文件大小:2k
源码类别:

远程控制编程

开发平台:

Visual C++

  1. #ifndef _RCPSERVER_H_
  2. #define _RCPSERVER_H_
  3. ///////////////////////////////////////////////
  4. //
  5. // 帮助宏
  6. #define SERVER_LISTEN_PORT 4813
  7. #define SAFE_DELETE_ARRAY(x)  if(x!=NULL) { delete[] x; x = NULL; }
  8. #define SAFE_CLOSE_HANDLE(x)  if(x!=NULL) { CloseHandle( x ); x = NULL; }
  9. #define WSAERRORSTRING (WSAErrorString(WSAGetLastError()))
  10. #ifdef _DEBUG // 调试输出宏
  11. #define DEBUGOUTPUT1(x) cout << x << endl;
  12. #define DEBUGOUTPUT2(x, y) cout << x << y << endl;
  13. #define DEBUGOUTPUT3(x, y, z) cout << x << y << z << endl;
  14. #else
  15. #define DEBUGOUTPUT1(x) 
  16. #define DEBUGOUTPUT2(x, y) 
  17. #define DEBUGOUTPUT3(x, y, z)
  18. #endif
  19. #define WM_RCASERVEREXIT (WM_USER+100)
  20. // 定义应答状态码
  21. #define RCA_RESPONSE_200_OK 200
  22. #define RCA_RESPONSE_404_NOTFOUND 404
  23. #define RCA_RESPONSE_808_BYEBYE 808
  24. #define RCA_RESPONSE_502_FAILED 502
  25. ///////////////////////////////////////////
  26. // RCA 协议头结构 大小为 40 个字节
  27. //
  28. typedef struct _RCARequestHeader{
  29. char rcaID[4]; // "RCA"
  30. DWORD dwHeaderType; // header type
  31. BOOL bNeedResponse; // 是否需要应答
  32. WORD wMajorVersion; // 主版本号
  33. WORD wMinorVersion; // 次版本号
  34. DWORD dwRequestID; // 请求操作的 ID 号
  35. DWORD requestBytes; // 请求的总字节数
  36. char reserved[16]; // 保留 24 个字节
  37. } RCAREQUESTHEADER, *PRCAREQUESTHEADER;
  38. typedef struct _RCAResponseHeader {
  39. char rcaID [4]; // RCA ID "RCA"
  40. DWORD dwHeaderType; // RCA header type
  41. DWORD dwStatusCode; // RCA response status code
  42. DWORD dwTotalBytes; // response total bytes
  43. char reserved[24]; // 保留 28 个字节
  44. }RCARESPONSEHEADER, *PRCARESPONSEHEADER;
  45. #define RCAHEADER_TYPE_REQUEST 1 // 请求头
  46. #define RCAHEADER_TYPE_RESPONSE 2 // 响应头
  47. #define RCAHEADER_TYPE_KEEPALIVE 3 // 保活包
  48. typedef struct _RCAKeepAliveHeader {
  49. char rcaID[4];
  50. DWORD dwHeaderType;
  51. char reserved[32];
  52. }RCAKEEPALIVEHEADER, *PRCAKEEPALIVEHEADER;
  53. typedef struct _RCAHeader {
  54. char rcaID[4];
  55. DWORD dwHeaderType;
  56. char reserved[32];
  57. }RCAHEADER, *PRCAHEADER;
  58. typedef struct _RCARequestHandleData {
  59. SOCKET  sockRemote;
  60. DWORD   dwRemoteAddress;
  61. DWORD dwRemotePort;
  62. DWORD   reserved;
  63. } RCAREQUESTHANDLEDATA;
  64. // 一个根据特定ID 进行处理的函数的指针类型
  65. typedef 
  66. BOOL
  67. ( WINAPI *RCAREQUESTIDHANDLER)
  68. SOCKET sockRemote, 
  69. RCAREQUESTHANDLEDATA* pData, 
  70. RCAREQUESTHEADER * pRCAHead, 
  71. HANDLE hEventArray[2]
  72. );
  73. #endif