实现 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();
} }

  以下是测试页面:

vc 实现一个 http Server的更多相关文章

  1. C#中自己动手创建一个Web Server(非Socket实现)

    目录 介绍 Web Server在Web架构系统中的作用 Web Server与Web网站程序的交互 HTTPListener与Socket两种方式的差异 附带Demo源码概述 Demo效果截图 总结 ...

  2. weblogic管理2 - 创建并启动一个managed server

    创建一个managed server. 1.  进入网页console管理页面,如:http://10.100.25.14:7001/console     , 先点击->服务器 (红色标记框) ...

  3. 如何使用OPENQUERY访问另一个SQL Server

    原文:如何使用OPENQUERY访问另一个SQL Server 在项目中,经常会遇到一个数据库访问另一个数据库,[CNVFERPDB]为服务器名,[CE3]为库名 SELECT Dtl.* FROM ...

  4. 搭建一个Web Server站点

    题:搭建一个Web Server站点.安装web服务,并在本地创建index.html测试 1.安装http服务 yum -y install httpd 2.进入网站目录 cd /var/www/h ...

  5. vc 找到一个或多个多重定义的符号

    vc 找到一个或多个多重定义的符号, 这个问题还是不能很好的解决. 最根本的是: 把所有有关定义的部分都放在.cpp文件中,对应的.h文件中只放声明.这样在#include ""的 ...

  6. 用select (多路复用)模拟一个 socket server

    需求:用select (多路复用)模拟一个 socket server.可以接收多并发. 1. 一开始是检测自己,如果我有活动了,就说明有客户端要连我了. #用select去模拟socket,实现单线 ...

  7. Eucalyptus-利用镜像启动一个Windows Server 2008r2实例

    1.前言 使用kvm制作Eucalyptus镜像(Windows Server 2008r2为例)——http://www.cnblogs.com/gis-luq/p/3990792.html 上一篇 ...

  8. 手写一个类SpringBoot的HTTP框架:几十行代码基于Netty搭建一个 HTTP Server

    本文已经收录进 : https://github.com/Snailclimb/netty-practical-tutorial (Netty 从入门到实战:手写 HTTP Server+RPC 框架 ...

  9. SpringCloud升级之路2020.0.x版-20. 启动一个 Eureka Server 集群

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们的业务集群结构 ...

随机推荐

  1. LeetCode——Nth Digit

    Question Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... ...

  2. rsync | scp文件同步命令使用

    现在有一台服务器A,目录/data2/abc下存在若干文件夹和文件,需要复制到服务器B中.这时,可以在服务器A上执行rsync或者scp命令,将文件夹或文件复制到服务器B中. SCP: scp /da ...

  3. C#代码实现 Excel表格与Object互相转换,Excel表格导入数据库(.NET2.0 .NET4.0)

    前些天在工作上遇到这个需求,在GitHub找到一个开源代码可以用,Fork了一个版本,整理一下发出来. ①.Net项目中使用Nuget安装一个 NPOI 包    https://github.com ...

  4. python 这个stdin怎么写

    !/usr/bin/env python -- coding: utf-8 -- import json import pprint import sys reload(sys) sys.setdef ...

  5. Build hadoop 2.5.2 with Java8

    mvn clean package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true

  6. 正确使用iOS常量(const)、enum以及宏(#define)

    前言:本文主要梳理iOS中如何使用常量.enum.宏,以及各自的使用场景. 重要的事情首先说:在iOS开发中请尽量多使用const.enum来代替宏定义(#define):随着项目工程的逐渐增大,过多 ...

  7. es6之Iterator

    1.任何数据结构只要部署了Iterator接口(本质是一个指针对象),也就是部署了Symbol.iterator属性,便可以完成遍历操作:数组原生就具备Iterator接口,就可以用for...of遍 ...

  8. 为cloudstack搭建ceph文件系统

    1. 安装dell服务器,  raid卡需要采用直通模式(non-raid); 各磁盘独立运行.  网络依赖硬件不同,使用万兆网卡或者两个千兆网卡做bonding6.  2. 配置host map(1 ...

  9. 通用Mapper相关

    1.通用Mapper中,用@Table来映数据表与实体,其中 name:指定表的名称,例如@Table(name="ls_post") catalog: 指定数据库名称,默认为当前 ...

  10. RocketMQ学习分享

    消息队列的流派 什么是 MQ Message Queue(MQ),消息队列中间件.很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ 是异步的,用来解耦的 ...