📄 main.c
字号:
/********************************************************************
** WebSrv -- main.c
**
** Steven Lee 2002.11
********************************************************************/
#include <Windows.h>
#include <TCHAR.h>
#include <stdio.h>
#include "WinSockEx.h"
#include "SrvCtrl.h"
#include "WebSrvDefs.h"
#include "SysExts.h"
void AboutWebSrv(void);
void HelpCmds(void);
void DisplayConfigs(void);
BOOL AnalysisCmd(int,char*[]);
BOOL GetCmd(LPTSTR);
BOOL DispatchCmd(LPCTSTR);
int main(int argc,char* argv[])
{
TCHAR pszError[MAX_PATH];
TCHAR pszCmd[MAX_PATH];
AboutWebSrv(); //About WebSrv
if( !InitWinSocket( pszError ) ) //Init WinSocket
{
_tprintf( pszError );
return 1;
}
InitSrvCtrl(); //Init Server Ctrl
if( !AnalysisCmd(argc,argv) ) //Analyse Command Messages
return 1;
_tprintf( _T("Starting Server...\n") ); //Start Server
if( !StartServer( pszError ) )
{
_tprintf( pszError );
return 1;
}
else
{
_tprintf( _T("Start Server Successfully!\n") );
_tprintf( _T("Server Port: %d\n"),SetServerPort(-1) );
}
SetConsoleCtrlHandler( ConsoleCtrlEvent,TRUE ); //Set Console Handler
SetConsoleTitle( _T("WebSrv.exe -- Web Server running..") );
while( GetCmd( pszCmd ) ) //Command Dispatching
{
if( !DispatchCmd( pszCmd ) )
break;
}
PauseWhenTerminate();
return 0;
}
void AboutWebSrv(void)
{
_tprintf( _T("****************************************************************\n") );
_tprintf( _T("** WebSrv.exe -- V1.01 **\n") );
_tprintf( _T("** Min Web Server Sample for HTTP Server **\n") );
_tprintf( _T("** CopyRight To Steven Lee 2002.11 NJTU JK00-4 **\n") );
_tprintf( _T("** **\n") );
_tprintf( _T("** Usage: **\n") );
_tprintf( _T("** WebSrv [[-p] -port number] [[-c] -max users] **\n") );
_tprintf( _T("** WebSrv [-h/?/help] **\n") );
_tprintf( _T("****************************************************************\n") );
}
BOOL AnalysisCmd(int argc,char* argv[])
{
LPTSTR lpszTok;
int n;
LPCTSTR lpctSeps = _T(" ");
int i = 1;
while(i<argc)
{
lpszTok = _tcstok( argv[i],lpctSeps );
lpszTok++;
if( (_tcsicmp( lpszTok,_T("h") ) == 0) || (_tcsicmp( lpszTok,_T("?") ) == 0)
|| (_tcsicmp( lpszTok,_T("help") ) == 0) )
{
HelpCmds();
return FALSE;
}
else if( _tcsicmp( lpszTok,_T("p") ) == 0 )
{
i++;
if( i >= argc )
return TRUE;
n = atoi( argv[i] );
i++;
SetServerPort( n );
}
else if( _tcsicmp( lpszTok,_T("c") ) == 0 )
{
i++;
if( i >= argc )
return TRUE;
n = atoi( argv[i] );
i++;
SetMaxUsers( n );
}
}
return TRUE;
}
BOOL GetCmd(LPTSTR pszCmd)
{
_tprintf( _T("-") );
_getts( pszCmd );
return TRUE;
}
BOOL DispatchCmd(LPCTSTR lpszCmd)
{
LPTSTR strTok;
int n = 0;
const CHAR seps[] = _T(" ");
if( _tcslen(lpszCmd) == 0 )
return TRUE;
strTok = _tcstok( (LPTSTR)lpszCmd,seps );
if( (_tcsicmp( strTok,_T("quit") ) == 0) || (_tcsicmp( strTok,_T("q") ) == 0) )
{
if( StopServer( 5000 ) )
{
_tprintf( _T("Web Server Stopped!\n") );
return FALSE;
}
}
else if( (_tcsicmp( strTok,_T("help") ) == 0) || (_tcsicmp( strTok,_T("?") ) == 0) )
HelpCmds();
else if( (_tcsicmp( strTok,_T("pause") ) == 0) || (_tcsicmp( strTok,_T("p") ) == 0) )
{
if( StopServer(5000) )
_tprintf( _T("WebSrv Stopped!\n") );
}
else if( (_tcsicmp( strTok,_T("start") ) == 0) || (_tcsicmp( strTok,_T("s") ) == 0) )
{
if( !ServerRunning() )
{
_tprintf( _T("Starting WebSrv...\n") );
if( StartServer(NULL) )
_tprintf( _T("WebSrv Started!\n") );
}
}
else if( (_tcsicmp( strTok,_T("maxusers") ) == 0) || (_tcsicmp( strTok,_T("m") ) == 0) )
{
strTok = _tcstok( NULL,seps );
if( (strTok != NULL) && (_tcslen(strTok) > 0) )
n = atoi( strTok );
_tprintf( _T("Current max users number: %d\n"),SetMaxUsers( n ) );
}
else if( (_tcsicmp( strTok,_T("nport") ) == 0) || (_tcsicmp( strTok,_T("n") ) == 0) )
{
strTok = _tcstok( NULL,seps );
if( (strTok != NULL) && (_tcslen(strTok) > 0) )
n = atoi( strTok );
if( n > 0 )
_tprintf( _T("Server port cannot be changed when running.\n") );
_tprintf( _T("Current server port: %d\n"),SetServerPort( n ) );
}
else if( (_tcsicmp( strTok,_T("config") ) == 0) || (_tcsicmp( strTok,_T("c") ) == 0) )
DisplayConfigs();
return TRUE;
}
void HelpCmds(void)
{
_tprintf( _T("\n") );
_tprintf( _T(" Usage:\n") );
_tprintf( _T(" WebSrv [[-p] -port number] [[-c] -max users]\n") );
_tprintf( _T("\n") );
_tprintf( _T(" Comands:\n") );
_tprintf( _T("\t-Q Quit\t\tStop and exit the server application.\n") );
_tprintf( _T("\t-? Help\t\tShow WebSrv Helps\n") );
_tprintf( _T("\t-P Pause\t\tStop Web server\n") );
_tprintf( _T("\t-S Start\t\tStart the Web Server\n") );
_tprintf( _T("\t-M MaxUsers [count]\tQuery or set the number of max users\n") );
_tprintf( _T("\t-N nPort [number]\tQuery or set the number of the server port\n") );
_tprintf( _T("\t-C Config\t\tQuery the configurations of the web servers\n") );
}
void DisplayConfigs(void)
{
_tprintf( _T("\tWebSrv v1.1\tCopyRight(c) Steven Lee\n") );
_tprintf( _T("\tServer %s\n"),ServerRunning() ? _T("Running") : _T("Stopped") );
_tprintf( _T("\tServer configurations:\n") );
_tprintf( _T("\tServer Port: \t\t\t%d\n"),SetServerPort( 0 ) );
_tprintf( _T("\tServer Max Users Number: \t%d\n"),SetMaxUsers( 0 ) );
_tprintf( _T("\tServer Bind IP: \t\t%s\n"),GetLocalIP() );
_tprintf( _T("\tConnected Users Number: \t%d\n"),GetUsersNumber() );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -