vc 实现一个 http Server
实现 http 的协议解析 以及封装 , 对应不同的访问地址, 调用绑定的处理程序 ,
#include "stdafx.h" #include "lyocomm\webServer.h" #include "lyocomm\webServer.cpp" // http://127.0.0.1:10000/ unsigned int __stdcall favicon(void* requ ) { lyoRequest* req = (lyoRequest*) requ; char* buf; int bufSize; FILE * file = NULL; errno_t e = fopen_s(&file, "E:\\测试代码\\cWeb\\Debug\\favicon.ico", "r"); if (!e && file) { fseek(file, 0,SEEK_END ); bufSize = ftell(file); buf = new char[bufSize]; fseek(file, 0, SEEK_SET ); fread(buf, bufSize, 1 , file) ; fclose(file); } lyoResponse resp; resp.status = http_200; resp.type = content_html ; resp.content = buf ; resp.length = bufSize; lyoServer::doResponse(resp, req->sock); delete[] buf; delete req; return 1; } unsigned int __stdcall index(void* requ ) { lyoRequest* req = (lyoRequest*) requ; char* con = "<head><title>index.html</title></head><body><b>web server 测试页面</b></body>"; lyoResponse resp; resp.status = http_200; resp.type = content_html ; resp.content = con ; resp.length = strlen( con); lyoServer::doResponse(resp, req->sock); delete req; return 1; } void main(int argc, char * argv[]) { lyoServer server = lyoServer("127.0.0.1" , 10000); void* p = (PVOID)&server ; server.handlers["/index.php"] = &index; server.handlers["/"] = &index; server.handlers["/favicon.ico"] = &favicon; if (server.valid) { server.listen(); } }
以下是测试页面:
如无特别说明, 文章为本人原创, 转载请注明出处, 也欢迎批评指正
-------------------------------------------------------------------
如有问题, 欢迎邮箱讨论: lyogogo@outlook.com
-------------------------------------------------------------------
如有问题, 欢迎邮箱讨论: lyogogo@outlook.com