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

Web服务器

开发平台:

WINDOWS

  1. // serweb.cpp
  2. // Written by Gus Estrella (estrella@cass.ma02.bull.com)
  3. // 
  4. //
  5. #include "stdafx.h"
  6. #include "serweb.h"
  7. #include "mainfrm.h"
  8. #include "serwedoc.h"
  9. #include "serwevw.h"
  10. #ifdef _DEBUG
  11. #undef THIS_FILE
  12. static char BASED_CODE THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CSerwebApp
  16. BEGIN_MESSAGE_MAP(CSerwebApp, CWinApp)
  17. //{{AFX_MSG_MAP(CSerwebApp)
  18. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  19. // NOTE - the ClassWizard will add and remove mapping macros here.
  20. //    DO NOT EDIT what you see in these blocks of generated code !
  21. //}}AFX_MSG_MAP
  22. // Standard file based document commands
  23. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  24. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  25. END_MESSAGE_MAP()
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CSerwebApp construction
  28. CSerwebApp::CSerwebApp()
  29. {
  30. // TODO: add construction code here,
  31. // Place all significant initialization in InitInstance
  32. }
  33. /////////////////////////////////////////////////////////////////////////////
  34. // The one and only CSerwebApp object
  35. CSerwebApp NEAR theApp;
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CSerwebApp initialization
  38. BOOL CSerwebApp::InitInstance()
  39. {
  40. WSADATA wsaData;         // Winsock
  41.     int error;              // Winsock
  42.                                    
  43.        
  44.     // Initialize WINSOCK below ....
  45.     
  46.     HowManyClients = GetProfileInt("SERWEB","HowManyClients", 5);                                
  47.     error = WSAStartup(WS_VERSION_REQD, &wsaData);
  48. if (error != 0)
  49.   {                               
  50.        MessageBox(NULL,"WinSocket could not be initialized.  Please check", AfxGetAppName(), MB_OK);
  51.     WSACleanup();
  52.     return FALSE;
  53.   }                                                               
  54. if (( LOBYTE (wsaData.wVersion) < WS_VERSION_MAJOR) ||
  55.     ( LOBYTE (wsaData.wVersion) == WS_VERSION_MAJOR &&
  56.       HIBYTE (wsaData.wVersion) < WS_VERSION_MINOR) )
  57.   {
  58.     sprintf(buf, "Windows Sockets version %d.%d not supported by winsock.dll", LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion));
  59.     MessageBox(NULL, buf,  AfxGetAppName(), MB_OK);   
  60.     WSACleanup();
  61.     return FALSE;   
  62.   }
  63.     
  64.     if (wsaData.iMaxSockets < (HowManyClients + 1))
  65.       {
  66.         sprintf(buf, "This application requires a minimun of %d supported sockets.  Close other network applications and restart or change the .INI file entry for Number of Clients.", MIN_SOCKETS_REQD);
  67.     MessageBox(NULL, buf,  AfxGetAppName(), MB_OK);
  68.     WSACleanup();
  69.     return FALSE;   
  70.   }
  71.            
  72.     // Continue with the window initialization now ......
  73.        
  74.      // Standard initialization
  75. // If you are not using these features and wish to reduce the size
  76. //  of your final executable, you should remove from the following
  77. //  the specific initialization routines you do not need.
  78. SetDialogBkColor();        // set dialog background color to gray
  79. LoadStdProfileSettings();  // Load standard INI file options (including MRU)
  80. // Register the application's document templates.  Document templates
  81. //  serve as the connection between documents, frame windows and views.
  82. AddDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME,
  83. RUNTIME_CLASS(CSerwebDoc),
  84. RUNTIME_CLASS(CMainFrame),     // main SDI frame window
  85. RUNTIME_CLASS(CSerwebView)));
  86. // create a new (empty) document
  87. OnFileNew();
  88. if (m_lpCmdLine[0] != '')
  89. {
  90. // TODO: add command line processing here
  91. }
  92. return TRUE;
  93. }
  94. /////////////////////////////////////////////////////////////////////////////
  95. BOOL CSerwebApp::ExitInstance()      
  96. {
  97.     int error;              // Winsock
  98.                  
  99.    error = WSACleanup();                      // Winsock code
  100. if (error != 0)
  101.   {                               
  102.     sprintf(buf, "Windows Sockets error %d.", error);
  103.     MessageBox(NULL, buf,  AfxGetAppName(), MB_OK);   
  104.       }
  105.    
  106.    if (m_pMainWnd != NULL)       
  107.       VERIFY(m_pMainWnd->DestroyWindow());
  108.    return CWinApp::ExitInstance();
  109. }             
  110.       
  111. /////////////////////////////////////////////////////////////////////////////
  112. // CAboutDlg dialog used for App About
  113. class CAboutDlg : public CDialog
  114. {
  115. public:
  116. CAboutDlg();
  117. // Dialog Data
  118. //{{AFX_DATA(CAboutDlg)
  119. enum { IDD = IDD_ABOUTBOX };
  120. //}}AFX_DATA
  121. // Implementation
  122. protected:
  123. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
  124. //{{AFX_MSG(CAboutDlg)
  125. // No message handlers
  126. //}}AFX_MSG
  127. DECLARE_MESSAGE_MAP()
  128. };
  129. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  130. {
  131. //{{AFX_DATA_INIT(CAboutDlg)
  132. //}}AFX_DATA_INIT
  133. }
  134. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  135. {
  136. CDialog::DoDataExchange(pDX);
  137. //{{AFX_DATA_MAP(CAboutDlg)
  138. //}}AFX_DATA_MAP
  139. }
  140. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  141. //{{AFX_MSG_MAP(CAboutDlg)
  142. // No message handlers
  143. //}}AFX_MSG_MAP
  144. END_MESSAGE_MAP()
  145. // App command to run the dialog
  146. void CSerwebApp::OnAppAbout()
  147. {
  148. CAboutDlg aboutDlg;
  149. aboutDlg.DoModal();
  150. }
  151. /////////////////////////////////////////////////////////////////////////////
  152. // CSerwebApp commands