PingThread.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. ////////////////////////////////////////////////////////////////////////////////
  2. //  
  3. //  FileName    :   PingThread.h
  4. //  Version     :   1.0
  5. //  Creater     :   Linsuyi
  6. //  Date        :   2002-01-10  10:30:13
  7. //  Comment     :   Tcp/ip ping thread header file
  8. //  
  9. ////////////////////////////////////////////////////////////////////////////////
  10. #if !defined(AFX_PINGTHREAD_H__BF9EABCA_24CC_48A9_8415_DFD06A7F07AD__INCLUDED_)
  11. #define AFX_PINGTHREAD_H__BF9EABCA_24CC_48A9_8415_DFD06A7F07AD__INCLUDED_
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif // _MSC_VER > 1000
  15. #include "PingSocket.h"
  16. class IKPingCallback
  17. {
  18. public:
  19.     virtual int  GetNextUrl(
  20.         ULONG      *pulContextWith,
  21.         int         nUrlBufSize,
  22.         char       *pszUrlTextBuf
  23.     ) = 0;
  24.     virtual int  PingStatus(
  25.         ULONG       ulContextWith,
  26.         ULONG       ulStatusType,
  27.         ULONG       ulStatusParam
  28.     ) = 0;
  29. };
  30. #define PINGTHREAD_PINGCOUNT                3
  31. #define PINGTHREAD_WAITEXITTIME             4000
  32. #define PINGTHREAD_URLMAXLENGTH             1024
  33. class CPingThread
  34.   : public CPingSocket
  35. {
  36. public:
  37.     CPingThread();
  38.     virtual ~CPingThread();
  39.     
  40. public:
  41.     void SetTimeOut(int nTimeOut = DEFAULT_PING_TIMEOUT);
  42.     void SetSplitTimes(int nTimes = PINGTHREAD_PINGCOUNT);
  43.     
  44.     void SetCallback(IKPingCallback *piCallback);
  45.     
  46.     int StartPingThread();
  47.     int StopPingThread(int nForceStop = false);
  48.     
  49.     HANDLE GetThreadHandle();
  50.     
  51. protected:
  52.     int  DoStatusNotify(ULONG ulOccurEvent, ULONG ulOccurParam);
  53.     void SetContext(ULONG ulContext);
  54.     
  55. protected:
  56.     virtual int OnPingStatus(int nOccurEvent);
  57.     
  58. protected:
  59.     ULONG MainExecution();
  60.     
  61. private:
  62.     static ULONG WINAPI PingThreadProc(LPVOID lpThisParam);
  63.     
  64. protected:
  65.     int m_nRepeatCount;
  66.     int m_nPingTimeOut;
  67.     
  68.     HANDLE m_hPingThread;
  69.     ULONG  m_ulPingThreadId;
  70.     
  71.     ULONG m_ulContextWith;
  72.     IKPingCallback *m_piCallback;
  73. };
  74. #endif // !defined(AFX_PINGTHREAD_H__BF9EABCA_24CC_48A9_8415_DFD06A7F07AD__INCLUDED_)