CWorkerSocket.h
上传用户:hhs829
上传日期:2022-06-17
资源大小:586k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //
  2. // CWorkerSocket.h
  3. // Created by Qiming Lu, 2002-02-25
  4. // 
  5. #if !defined(__CWorkerSocket_h__)
  6. #define __CWorkerSocket_h__
  7. #if _MSC_VER > 1000
  8. #pragma once
  9. #endif // _MSC_VER > 1000
  10. // Error codes 
  11. #define S_SOCKET_OK                      0X10
  12. #define E_SOCKET_CLOSE              0X11
  13. #define E_SOCKET_FAIL                    0X12
  14. #define E_SOCKET_NOT_READY               0x13
  15. // Message header
  16. typedef struct
  17. {
  18. unsigned int    nMsgType:8;      // Payload type
  19. unsigned int    nDataSize:16;    // Payload size
  20. } MSG_HEADER, *PMSG_HEADER;
  21. // Message
  22. #define RECV_EXIT                        0x20  // Indicate stop receiving thread
  23. #define RECV_EXIT_REQUEST                0x21  // Request the remote to send some data
  24. //////////////////////////////////////////////////////////////////////////////
  25. class CWorkerSocket
  26. {
  27. public:
  28. CWorkerSocket();
  29. virtual ~CWorkerSocket();
  30. // Attributes
  31. protected:
  32. SOCKET    m_hSocket;
  33. bool      m_bReceiving;
  34. bool      m_bSending;
  35. HANDLE    m_hThrdFinish;
  36. HANDLE    m_hSendFinish;
  37. public:
  38. bool Attach(SOCKET inSock);
  39. SOCKET Detach(void);
  40. int  Send(char * inData, int inLen);
  41. int  Receive(char * outBuf, int inLen);
  42. bool Connect(char * inTarget, int inPort);
  43. void Disconnect(void);
  44. // Receive functions
  45. bool StartReceiving(void);
  46. bool StopReceiving(void);
  47. virtual void ReceivingLoop(void);
  48. static UINT ReceivingThrd(void * pParam);
  49. // Send functions
  50. bool StartSending(void);
  51. bool StopSending(void);
  52. virtual void SendingLoop(void);
  53. static UINT SendingThrd(void * pParam);
  54. };
  55. #endif // !defined(__CWorkerSocket_h__)