Telnet.h
上传用户:zhangwei01
上传日期:2007-01-09
资源大小:25k
文件大小:5k
源码类别:

Telnet服务器

开发平台:

Visual C++

  1. ///////////////////////////////////////////////////////////////////////
  2. // Filename: telnet.h
  3. //
  4. // Date    : 27-May-2001
  5. // Author  : J.Hogendoorn ( jeroenhog@gmx.net )
  6. //
  7. // Note    : this code may be used anywhere as long
  8. //         : as this comment remains. 
  9. //
  10. ///////////////////////////////////////////////////////////////////////
  11. #ifndef _TELNET_H_
  12. #define _TELNET_H_
  13. #include "telnetsocket.h"
  14. void TelnetThread(void* telnet);
  15. using namespace std;
  16. // type definition for callback functions
  17. typedef CString (*callback) (const CString&);
  18. typedef struct
  19. {
  20. CString  sCommand; // the command
  21. callback function; // the function
  22. } callBackFunction;
  23. // vector with callbackfunctions
  24. typedef vector<callBackFunction> callbackVector;
  25. class CTelnet  
  26. {
  27. public:
  28. CTelnet( const CString& sIntroScreen
  29.    , const CString& sPassword
  30.    , const CString& sPasswordPrompt
  31.    , const CString& sUserId
  32.    , const CString& sUserIdPrompt
  33.    , const CString& sPrompt
  34.    , DWORD          dwPortNumber
  35.    );
  36. virtual ~CTelnet();
  37. bool           start();
  38. void           stop();
  39. bool           registerFunction( CString (*func)(const CString&) , const CString& sCommand );
  40. bool           write( const CString& sData );
  41. void           setLastError( const CString& slastError );
  42. CString        getLastError() const;
  43. HANDLE    getThreadStartupSucceededEvent() const;
  44. HANDLE         getThreadStartupFailedEvent() const;
  45. CString        getIntroScreen() const;
  46. CString        getUserId() const;
  47. CString        getPassword() const;
  48. CString        getUserIdPrompt() const;
  49. CString        getPasswordPrompt() const;
  50. DWORD          getPortNumber() const;
  51. CString        getPrompt() const;
  52. void           setPrompt(const CString& sPrompt );
  53. CTelnetSocket* getTelnetSocket() const;
  54. void           setLoggedOn();
  55. void           setNotLoggedOn();
  56. bool           getLoggedOn() ;
  57. callback       matchFunction( const CString& sCommand , CString& sArgs );
  58. private:
  59. void             cleanUp();
  60. bool             m_bIsRunning;
  61. bool             m_bLoggedOn;
  62. CString          m_sLastError;
  63. CString          m_sIntroScreen;
  64. CString          m_sUserId;
  65. CString          m_sPassword;
  66. CString          m_sUserIdPrompt;
  67. CString          m_sPasswordPrompt;
  68. DWORD            m_dwPortNumber;
  69. CString          m_sCommand;
  70. CString          m_sPrompt;
  71. callback         m_function;
  72. HANDLE           m_hThread;
  73. CTelnetSocket*   m_telnetSock;
  74. HANDLE           m_threadStartupSuccceeded;
  75. HANDLE           m_threadStartupFailed;
  76. CRITICAL_SECTION m_critSection;
  77. callbackVector   m_callBackList;
  78. };
  79. //-------------------------------------------------------------------------
  80. inline HANDLE CTelnet::getThreadStartupSucceededEvent() const
  81. {
  82. return m_threadStartupSuccceeded;
  83. }
  84. //-------------------------------------------------------------------------
  85. inline HANDLE CTelnet::getThreadStartupFailedEvent() const
  86. {
  87. return m_threadStartupFailed;
  88. }
  89. //-------------------------------------------------------------------------
  90. inline void CTelnet::setLastError( const CString& slastError ) 
  91. {
  92. m_sLastError = slastError;
  93. }
  94. //-------------------------------------------------------------------------
  95. inline CString CTelnet::getLastError() const
  96. {
  97. return m_sLastError;
  98. }
  99. //-------------------------------------------------------------------------
  100. inline CTelnetSocket* CTelnet::getTelnetSocket() const
  101. {
  102. return m_telnetSock;
  103. }
  104. //-------------------------------------------------------------------------
  105. inline CString CTelnet::getIntroScreen() const
  106. {
  107. return m_sIntroScreen;
  108. }
  109. //-------------------------------------------------------------------------
  110. inline CString CTelnet::getUserId() const
  111. {
  112. return m_sUserId;
  113. }
  114. //-------------------------------------------------------------------------
  115. inline CString CTelnet::getPassword() const
  116. {
  117. return m_sPassword;
  118. }
  119. //-------------------------------------------------------------------------
  120. inline CString CTelnet::getUserIdPrompt() const
  121. {
  122. return m_sUserIdPrompt;
  123. }
  124. //-------------------------------------------------------------------------
  125. inline CString CTelnet::getPasswordPrompt() const
  126. {
  127. return m_sPasswordPrompt;
  128. }
  129. //-------------------------------------------------------------------------
  130. inline DWORD CTelnet::getPortNumber() const
  131. {
  132. return m_dwPortNumber;
  133. }
  134. //-------------------------------------------------------------------------
  135. inline CString CTelnet::getPrompt() const 
  136. {
  137. return m_sPrompt;
  138. }
  139. //-------------------------------------------------------------------------
  140. #endif