SERWEVW.H
上传用户:areilwang
上传日期:2007-01-04
资源大小:375k
文件大小:4k
源码类别:

Web服务器

开发平台:

WINDOWS

  1. // serwevw.h : interface of the CSerwebView class
  2. //
  3. /////////////////////////////////////////////////////////////////////////////
  4. #define COLUMN_MAX 80        // How many columns to allow for the screen
  5. // WWW variables below..  We will read from a file but for now they are gard coded.
  6. // WWW variables that will remain.. Don't replace ...
  7. #define MAX_CLIENTS     10    // Maximun number of connections to allow
  8. #define SEND_BUFFER    300    // How many characters to send at a time ..
  9. // State of the sockets below ....
  10. #define SOCK_FREE        4    // The socket is not being used .
  11. #define WAITING          5    // Waiting for the socket to send information
  12. #define SENDING          6    // Sending data to the other server 
  13. #define SOCK_FULL        7    // All sockets aree in use.  Send can msg.
  14. #define CLIENT_MSG    WM_USER+1     // The clients is crying ..
  15. #define INCOMING_MSG  WM_USER+2     // The master has closed, or a connections has comed ..
  16. #define MAX_IN_BUF   100      // how many chars to receive from client .....
  17. #define SEND_BUF_LEN 200      // How many chars to send at a time ....
  18. struct WWWSockDef {
  19.     short    State;             // Status of the Socket
  20.     SOCKET   CliSock;
  21.     CString  InBuf;
  22.     CFile    SendFile;
  23.     char     SendBuf[SEND_BUF_LEN];
  24.     int      HowManyInSendBuf;  
  25.     int      OffsetToSend; 
  26.     CTime    LastTime; 
  27.     char     CliIp[30];          // IP Of client.
  28. }; 
  29.     
  30. // Misc stuff ..........
  31. #define TIME_TO_CHECK     (360*60)       // Milliseconds to check for inactive connections
  32. #define IdEv               20           // ID Event for Timer.
  33. #define INACTIVE          2  // No response in over 3 minutes should be killed.
  34.     
  35. //////////////////////////////////////////////////////////////////////
  36. class CSerwebView : public CScrollView
  37. {
  38. protected: // create from serialization only
  39. CSerwebView();
  40. DECLARE_DYNCREATE(CSerwebView)
  41.     
  42.     WWWSockDef WWWConv[MAX_CLIENTS+1];    // All conversations going on ....
  43.     SOCKET     WWWServer;               // The popetier - controls all connections
  44.     SOCKET     cli_sock;
  45.     
  46.     struct sockaddr_in srv_addr, cli_addr;
  47.     LPSERVENT srv_info;
  48.     LPHOSTENT host_info;
  49.     char buf[200];                      // All purpose buffer.  Usually for error messages.
  50.     
  51.     int WWWPort;             // Port to listen on
  52.     int HowManyClients;      // similar to app one, but for ease of use, lets redefine it and re get it....
  53.     CString SendDir;             // From where do we send data ?                
  54.     CString FileNotExistMsg;     // File to send if we can't file a file being requested. 
  55.     CString ClosedServerMsg;     // File to send if server is closed.
  56.     CString PeriodAllowedMsg;    // File to sedn if user send for a file with ..
  57.     
  58. // Attributes
  59. public:
  60. CSerwebDoc* GetDocument();
  61. // Operations
  62. public:
  63. void OnInitialUpdate();
  64. virtual void OnUpdate(CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL);
  65. virtual void PrintSt(CString StToPrint);      
  66. virtual void PrintSt(char* AString);      
  67. virtual void PrintChar(char nChar, char OutputIt = 'n');          // Print just one char ....
  68. virtual void ProcessRequest(int SockNumber);      
  69. virtual void ProcessRead(int SockNumber);      
  70. virtual void SendBlockOfData(int SockNumber);      
  71. virtual CString GetFirstString(CString TheString, int WrdToGet);      
  72.     virtual void KillConn(int SockNumber);
  73. // Implementation
  74. public:
  75. virtual ~CSerwebView();
  76. virtual void OnDraw(CDC* pDC);  // overridden to draw this view
  77. #ifdef _DEBUG
  78. virtual void AssertValid() const;
  79. virtual void Dump(CDumpContext& dc) const;
  80. #endif
  81. // Generated message map functions
  82. protected:
  83. //{{AFX_MSG(CSerwebView)
  84. afx_msg LRESULT OnWWWClientMsg(WPARAM wParam, LPARAM lParam);
  85. afx_msg LRESULT OnWWWServerMsg(WPARAM wParam, LPARAM lParam);
  86. afx_msg void OnPeriodOk();
  87. afx_msg void OnServerInact();
  88. afx_msg void OnUpdateStat();
  89. afx_msg void OnTimer(UINT nIDEvent);
  90. //}}AFX_MSG
  91. DECLARE_MESSAGE_MAP()
  92. };
  93. #ifndef _DEBUG // debug version in serwevw.cpp
  94. inline CSerwebDoc* CSerwebView::GetDocument()
  95.    { return (CSerwebDoc*) m_pDocument; }
  96. #endif
  97. /////////////////////////////////////////////////////////////////////////////