本来是想实现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. 【LeetCode】158. Read N Characters Given Read4 II - Call multiple times

    Difficulty: Hard  More:[目录]LeetCode Java实现 Description Similar to Question [Read N Characters Given ...

  2. Storm流处理项目案例

    1.项目框架 ======================程序需要一步一步的调试===================== 一:第一步,KafkaSpout与驱动类 1.此时启动的服务有 2.主驱动类 ...

  3. 2n皇后问题【dfs】

    <题目链接> 题目描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后 ...

  4. 洛谷P1432 倒水问题(CODEVS.1226)

    To 洛谷.1432 倒水问题 题目背景 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were co ...

  5. 8.6 正睿暑期集训营 Day3

    目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...

  6. (转)Java atomic原子类的使用方法和原理(一)

    在讲atomic原子类之前先看一个小例子: public class UseAtomic { public static void main(String[] args) { AtomicIntege ...

  7. (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫

    下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...

  8. mac pro 如何让终端默认运行python3.X而不是2.7

    Mac版本的Python默认是2.7,安装高版本后需要修改为你安装的版本. 1,首先打开终端 open ~/.bash_profile 打开配置文件 2. 写入python的外部环境变量(本人的版本是 ...

  9. C# ConcurrentDictionary实现

    ConcurrentDictionary的源码看了很多遍,今天抽点时间整理一下,它的实现比Dictionary要复杂很多,至于线程安全我觉得比较简单,用的是lock的思想.首先我们来看看它的源码. p ...

  10. jQuery()方法的第二个参数

    关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 con ...