#include "shrink.h" /************************************************************************ 全局变量定义 *************************************************************************/ struct mimeentry mimes[] = { {"css", "text/css",0}, {"htm", "text/html",0}, {"html", "text/html",0}, {"js", "text/html",0}, {"wav", "audio/x-wav",0}, {"swf", "application/x-shockwave-flash",0}, {"mp3", "audio/x-mp3",0}, {"mid", "audio/mid",0}, {"ram", "audio/x-pn-realaudio",0}, {"ra", "audio/x-pn-realaudio",0}, {"doc", "application/msword",0}, {"zip", "application/x-zip-compressed",0}, {"xls", "application/excel",0}, {"tgz", "application/x-tar-gz",0}, {"tar.gz", "application/x-tar-gz",0}, {"tar", "application/x-tar",0}, {"gz", "application/x-gunzip",0}, {"arj", "application/x-arj-compressed",0}, {"rar", "application/x-arj-compressed",0}, {"rtf", "application/rtf",0}, {"pdf", "application/pdf",0}, {"jpeg", "image/jpeg",0}, {"png", "image/png",0}, {"mpg", "video/mpeg",0}, {"mpeg", "video/mpeg",0}, {"asf", "video/x-ms-asf",0}, {"avi", "video/x-msvideo",0}, {"bmp", "image/bmp",0}, {"jpg", "image/jpeg",0}, {"gif", "image/gif",0}, {"ico", "image/x-icon",0}, }; const int mine_len = sizeof(mimes) / sizeof(*mimes); struct configentry configs[] = { {"root", "D:\\wangjie\\wangjie\\WebServer\\trunk\\src\\WebServer_PC\\root"}, {"default_page", "index.html,index.cgi"}, {"cgi_ext", ".cgi"}, {"listen_port", "80"}, }; struct requestlist rlist[TH_NUM]; struct requestlist * prlfree; struct TP_threadpool tp; //////////////////////////////////////////////////////////////////////// struct filemap fms[FILE_MAX]; int fmno=0; /************************************************************************ ** Function name: shrink_init ** Descriptions: 初始化服务器 ** output parameters: pcom:连接指针 *************************************************************************/ void shrink_init(struct comm *pcom) { int i; int len; #ifdef _WIN32 WSADATA data; WSAStartup(MAKEWORD(2,2), &data); #endif for (i=0;inext; memset(&(prl->r),0,sizeof(struct request)); comm_accept(com,&(prl->r).comm_remote); #ifdef _ZLGIP if(prl->r.comm_remote.us !=0xff) { #endif prl->r.io_remote.readlen = comm_read(prl->r.comm_remote,prl->r.io_remote.buf,IO_REMOTE); prl->r.io_remote.buf[prl->r.io_remote.readlen] = '\0'; #ifdef _DEBUG printf("read\n%s",prl->r.io_remote.buf); #endif #ifdef _ZLGIP if(prl->r.io_remote.readlen == 0) { prl->next = prlfree; prlfree = prl; continue; } #endif TP_myworking(&tp,(TP_Work_Fun)server,prl); /* 让工作线程开始处理请求 */ #ifdef _ZLGIP } else { prl->next = prlfree; prlfree = prl; } #endif } }