⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miniweb.c

📁 小型的web服务器源码
💻 C
字号:
///////////////////////////////////////////////////////////////////////////////// http.c//// MiniWeb sample utility ///////////////////////////////////////////////////////////////////////////////#include <stdio.h>#include <string.h>#include "httppil.h"#include "httpapi.h"const char *pageHead="\<html><body>\<table border=1 cellpadding=0 cellspacing=0 width=244>";const char *pageTemplate="<tr><td width=150>%s</td><td width=150>%d</td></tr>";const char *pageTail="</table></body></html>";int urlProcStats(HttpSocket* phsSocket, char *pchRequest){	HttpStats *stats=mwGetHttpStats();	char *pBuf=phsSocket->pucData;	int iDataLen;	//generate page	iDataLen=sprintf(pBuf,pageHead);	iDataLen+=sprintf(pBuf+iDataLen,pageTemplate,"Current time:",gettime());	iDataLen+=sprintf(pBuf+iDataLen,pageTemplate,"Server uptime:",gettime()-stats->startTime,pchRequest);	iDataLen+=sprintf(pBuf+iDataLen,pageTemplate,"Requests:",stats->reqCount);	iDataLen+=sprintf(pBuf+iDataLen,pageTemplate,"File sent:",stats->fileSentCount);	iDataLen+=sprintf(pBuf+iDataLen,pageTemplate,"Bytes sent:",stats->fileSentBytes);	iDataLen+=sprintf(pBuf+iDataLen,pageTail);	//return data to server	phsSocket->iDataLength=iDataLen;	phsSocket->hftFileType=HTTPFILETYPE_HTML;	phsSocket->hcsSource=HTTPSRC_MEM;	return 1;}int stbWebSubstCallback(SubstParam* sp){	char *p=sp->pchParamName;	int value;	HttpStats *stats;	if (!strncmp(p,"stats.",6)) {		stats=mwGetHttpStats();		p+=6;		if (!strcmp(p,"reqCount")) {			value=stats->reqCount;		} else if (!strcmp(p,"fileSentCount")) {			value=stats->fileSentCount;		} else if (!strcmp(p,"fileSentBytes")) {			value=stats->fileSentBytes;		} else if (!strcmp(p,"upTime")) {			value=gettime()-stats->startTime;		} else {			return 0;		}		sprintf(sp->chParamValue,"%d",value);		return 1;	}	return 0;}int main(int argc,char* argv[]){	int i;	httpParam param={80,"webroot"};	//parsing command line arguments	for (i=1;i<argc;i++) {		if (argv[i][0]=='-') {			switch (argv[i][1]) {			case 'p':				i++;				if (i<argc) param.httpPort=atoi(argv[i]);				break;			case 'd':				i++;				if (i<argc) param.webPath=argv[i];				break;			}		}	}	//register page variable substitution callback	//mwSubstRegister(stbWebSubstCallback);	//register URL preprocessor callbacks	mwUrlProcessorRegister("~stats",&urlProcStats);	//start server	printf("Starting MiniWeb on port %d\n",param.httpPort);	if (!mwServerStart(&param)) {		printf("Failed to launch miniweb\n");	}#ifndef NOTHREAD	getchar();#endif	//shutdown server	mwServerShutdown();	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -