DataSocket.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #if !defined(AFX_DATASOCKET_H__38ADA982_DD96_4607_B7D2_982011F162FE__INCLUDED_)
  2. #define AFX_DATASOCKET_H__38ADA982_DD96_4607_B7D2_982011F162FE__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. class CConnectSocket;
  7. #define XFERMODE_IDLE 0
  8. #define XFERMODE_LIST 1
  9. #define XFERMODE_SEND 2
  10. #define XFERMODE_RECEIVE 3
  11. #define XFERMODE_ERROR 4
  12. class CDataSocket : public CAsyncSocket
  13. {
  14. public:
  15. CDataSocket(CConnectSocket *pSocket, int nTransferType = 0);
  16. virtual ~CDataSocket();
  17. virtual void OnSend(int nErrorCode);
  18. virtual void OnConnect(int nErrorCode);
  19. virtual void OnClose(int nErrorCode);
  20. virtual void OnReceive(int nErrorCode);
  21. virtual void OnAccept(int nErrorCode);
  22. void SetRestartOffset(DWORD dwOffset);
  23. void SetTransferType(int nType, BOOL bWaitForAccept = FALSE);
  24. void SetData(LPCTSTR lpszData);
  25. int GetStatus();
  26. protected:
  27. int Receive();
  28. BOOL PrepareReceiveFile(LPCTSTR lpszFilename);
  29. BOOL PrepareSendFile(LPCTSTR lpszFilename);
  30. public:
  31. CFile m_File;
  32. protected:
  33. DWORD m_dwRestartOffset;
  34. BOOL m_bConnected;
  35. BOOL m_bInitialized;
  36. DWORD m_nTotalBytesTransfered; //已传输的长度
  37. DWORD m_nTotalBytesReceive; //接收长度
  38. DWORD m_nTotalBytesSend; //要发送的总长度
  39. int m_nTransferType; //传输类型
  40. CString m_strData; //要传输的数据
  41. int m_nStatus; //状态
  42. CConnectSocket* m_pConnectSocket;
  43. };
  44. #endif // AFX_DATASOCKET_H__38ADA982_DD96_4607_B7D2_982011F162FE__INCLUDED_