本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了。所以这一小节就是本次的最后一节了。就简单的说几个注意点。

  1.加个配置文件

    使用单例模式,使用一个类,该类保存一些信息,例如一个配置类的一个属性为PAGE404的字符串,该字符串保存一个文件地址,然后我们的Page_404函数就可以用access判断PAGE404这个字符串对应的文件是否存在,如果存在那么如果是404页面那么就cat这个文件,而不是默认的404函数里面的页面。还有个端口什么的都是通过一个类似宏定义一样,代替程序中的魔数。还有各种配置的就不多说了。

  2.访问控制

    这个就更简单了,通过一个配置文件读取运行的IP,和拒绝的IP,然后在WebServer::ServerAccept()函数中可以判断,在这个函数中可以获取到连接进来的IP地址,然后可以通过这个IP地址进行约束。具体也不是很难。

  3.siege性能测试

    这个就是本小节的重点了。(这里要说明的是我这个服务器性能差的很,求不吐槽。)

    下载地址: http://www.joedog.org/2013/07/siege-3-0-3-url-encoding/   

 siege -c100 -r5 url #对url地址进行100个并发用户5次的测试
##############我的WebServer############
Transactions: hits
Availability: 100.00 %
Elapsed time: 8.87 secs
Data transferred: 0.60 MB
Response time: 0.75 secs
Transaction rate: 56.37 trans/sec
Throughput: 0.07 MB/sec
Concurrency: 42.26
Successful transactions:
Failed transactions:
Longest transaction: 3.95
Shortest transaction: 0.01
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Transactions: hits
Availability: 100.00 %
Elapsed time: 8.64 secs
Data transferred: 0.60 MB
Response time: 0.66 secs
Transaction rate: 57.87 trans/sec
Throughput: 0.07 MB/sec
Concurrency: 37.96
Successful transactions:
Failed transactions:
Longest transaction: 2.87
Shortest transaction: 0.01
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Transactions: hits
Availability: 100.00 %
Elapsed time: 8.58 secs
Data transferred: 0.60 MB
Response time: 0.62 secs
Transaction rate: 58.28 trans/sec
Throughput: 0.07 MB/sec
Concurrency: 36.41
Successful transactions:
Failed transactions:
Longest transaction: 3.01
Shortest transaction: 0.01 ##############本地Nginx################
Transactions: hits
Availability: 100.00 %
Elapsed time: 5.07 secs
Data transferred: 0.29 MB
Response time: 0.02 secs
Transaction rate: 98.62 trans/sec
Throughput: 0.06 MB/sec
Concurrency: 2.40
Successful transactions:
Failed transactions:
Longest transaction: 0.08
Shortest transaction: 0.00
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Transactions: hits
Availability: 100.00 %
Elapsed time: 5.19 secs
Data transferred: 0.29 MB
Response time: 0.02 secs
Transaction rate: 96.34 trans/sec
Throughput: 0.06 MB/sec
Concurrency: 2.40
Successful transactions:
Failed transactions:
Longest transaction: 0.08
Shortest transaction: 0.00
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Transactions: hits
Availability: 100.00 %
Elapsed time: 5.15 secs
Data transferred: 0.29 MB
Response time: 0.02 secs
Transaction rate: 97.09 trans/sec
Throughput: 0.06 MB/sec
Concurrency: 1.83
Successful transactions:
Failed transactions:
Longest transaction: 0.05
Shortest transaction: 0.00
##############本地httpd################
Transactions: hits
Availability: 100.00 %
Elapsed time: 5.18 secs
Data transferred: 0.11 MB
Response time: 0.02 secs
Transaction rate: 96.53 trans/sec
Throughput: 0.02 MB/sec
Concurrency: 2.18
Successful transactions:
Failed transactions:
Longest transaction: 0.18
Shortest transaction: 0.00
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Transactions: hits
Availability: 100.00 %
Elapsed time: 5.17 secs
Data transferred: 0.11 MB
Response time: 0.02 secs
Transaction rate: 96.71 trans/sec
Throughput: 0.02 MB/sec
Concurrency: 1.55
Successful transactions:
Failed transactions:
Longest transaction: 0.17
Shortest transaction: 0.00
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Transactions: hits
Availability: 100.00 %
Elapsed time: 5.14 secs
Data transferred: 0.11 MB
Response time: 0.02 secs
Transaction rate: 97.28 trans/sec
Throughput: 0.02 MB/sec
Concurrency: 1.77
Successful transactions:
Failed transactions:
Longest transaction: 0.12
Shortest transaction: 0.00

   一看才知道,我的服务器是有多渣呀,好不开心。

  Socket网络编程--简单Web服务器各章节传送门

  Socket网络编程--简单Web服务器(1)  http://www.cnblogs.com/wunaozai/p/3926033.html
  Socket网络编程--简单Web服务器(2)  http://www.cnblogs.com/wunaozai/p/3936295.html
  Socket网络编程--简单Web服务器(3)  http://www.cnblogs.com/wunaozai/p/3943952.html
  Socket网络编程--简单Web服务器(4)  http://www.cnblogs.com/wunaozai/p/3945218.html
  Socket网络编程--简单Web服务器(5)  http://www.cnblogs.com/wunaozai/p/3946486.html
  Socket网络编程--简单Web服务器(6)  http://www.cnblogs.com/wunaozai/p/3949324.html

  Web服务器源码下载: http://files.cnblogs.com/wunaozai/WebServer.zip

  参考资料: http://www.zihou.me/html/2011/01/27/2737.html

  本文地址: http://www.cnblogs.com/wunaozai/p/3949324.html

Socket网络编程--简单Web服务器(6)的更多相关文章

  1. Socket网络编程--简单Web服务器(1)

    这一次的Socket系列准备讲Web服务器.就是编写一个简单的Web服务器,具体怎么做呢?我也不是很清楚流程,所以我找来了一个开源的小的Web服务器--tinyhttpd.这个服务器才500多行的代码 ...

  2. Socket网络编程--简单Web服务器(2)

    上一小节通过阅读开源的Web服务器--tinyhttpd.大概知道了一次交互的请求信息和应答信息的具体过程.接下来我就自己简单的实现一个Web服务器. 下面这个程序只是实现一个简单的框架出来.这次先实 ...

  3. Socket网络编程--简单Web服务器(3)

    上一小节已经实现了浏览器发送请求,然后服务器给出应答信息,然后浏览器显示出服务器发送过来的网页.一切看起来都是那么的美好.这一小节就准备实现可以根据地址栏url的不同来返回指定的网页.目前还不考虑带参 ...

  4. Socket网络编程--简单Web服务器(4)

    上一小节已经实现了对图片的传输,接下来就是判断文件是否为js,css,png等格式.我们增加一个函数用于判断格式 int WebServer::get_filetype(char *type,char ...

  5. Socket网络编程--简单Web服务器(5)

    这一小节我们将实现服务器对get和post的请求进行对cgi程序的调用.对于web服务器以前的章节已经实现了对get和post请求的调用接口,接下来给出对应接口的实现. int WebServer:: ...

  6. C++ socket 网络编程 简单聊天室

    操作系统里的进程通讯方式有6种:(有名/匿名)管道.信号.消息队列.信号量.内存(最快).套接字(最常用),这里我们来介绍用socket来实现进程通讯. 1.简单实现一个单向发送与接收 这是套接字的工 ...

  7. C#中使用Socket实现简单Web服务器

    上一篇博客中介绍了怎样使用socket访问web服务器.关键有两个: 熟悉Socket编程: 熟悉HTTP协议. 上一篇主要是通过socket来模拟浏览器向(任何)Web服务器发送(HTTP)请求,重 ...

  8. Java Web 基础(一) 基于TCP的Socket网络编程

    一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...

  9. python之Socket网络编程

    什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...

随机推荐

  1. 033 关于YARN的HA

    一:准备 1.规划 namenode               namenode ZKFC ZKFC journalnode        journalnode               jou ...

  2. 李宏毅机器学习笔记1:Regression、Error

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  3. js算法初窥03(搜索及去重算法)

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...

  4. C# 运行中 Lua 语言脚本

    这里就不介绍Lua语言了,使用挺广的一种脚本语言.自行百度. 第一步 使用 Nuget 安装引用 VikingErik.LuaInterface. 第二步 添加 Using using LuaInte ...

  5. Unity3D 入门 游戏开发 Unity3D portal game development

    Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...

  6. Python3基础系列-基本入门语法

    本文简单地介绍了python的一些基本入门知识,通过对这些知识的了解,大家可以写一些简单的代码,同时也为后面深入理解打下基础.本文的主要内容如下: 值和类型 值,即value,通常有:1,2,3.14 ...

  7. netty同时做http和websocket(netty入门)

    ---恢复内容开始--- http://www.jianshu.com/p/5c29c6c6d28c ---恢复内容结束--- http://www.jianshu.com/p/5c29c6c6d28 ...

  8. eclipse中出现的一些错误

    selection dose not contain a main type解决办法:main忘记加static

  9. 来自极客头条的 35 个 Java 代码性能优化总结

    前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...

  10. 解决springboot druid 数据库批量更新错误问题

    原文:https://www.2cto.com/kf/201712/706399.html springboot druid 数据库多SQL错误multi-statement not allow Ca ...