Socket网络编程--简单Web服务器(6)
本来是想实现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)的更多相关文章
- Socket网络编程--简单Web服务器(1)
这一次的Socket系列准备讲Web服务器.就是编写一个简单的Web服务器,具体怎么做呢?我也不是很清楚流程,所以我找来了一个开源的小的Web服务器--tinyhttpd.这个服务器才500多行的代码 ...
- Socket网络编程--简单Web服务器(2)
上一小节通过阅读开源的Web服务器--tinyhttpd.大概知道了一次交互的请求信息和应答信息的具体过程.接下来我就自己简单的实现一个Web服务器. 下面这个程序只是实现一个简单的框架出来.这次先实 ...
- Socket网络编程--简单Web服务器(3)
上一小节已经实现了浏览器发送请求,然后服务器给出应答信息,然后浏览器显示出服务器发送过来的网页.一切看起来都是那么的美好.这一小节就准备实现可以根据地址栏url的不同来返回指定的网页.目前还不考虑带参 ...
- Socket网络编程--简单Web服务器(4)
上一小节已经实现了对图片的传输,接下来就是判断文件是否为js,css,png等格式.我们增加一个函数用于判断格式 int WebServer::get_filetype(char *type,char ...
- Socket网络编程--简单Web服务器(5)
这一小节我们将实现服务器对get和post的请求进行对cgi程序的调用.对于web服务器以前的章节已经实现了对get和post请求的调用接口,接下来给出对应接口的实现. int WebServer:: ...
- C++ socket 网络编程 简单聊天室
操作系统里的进程通讯方式有6种:(有名/匿名)管道.信号.消息队列.信号量.内存(最快).套接字(最常用),这里我们来介绍用socket来实现进程通讯. 1.简单实现一个单向发送与接收 这是套接字的工 ...
- C#中使用Socket实现简单Web服务器
上一篇博客中介绍了怎样使用socket访问web服务器.关键有两个: 熟悉Socket编程: 熟悉HTTP协议. 上一篇主要是通过socket来模拟浏览器向(任何)Web服务器发送(HTTP)请求,重 ...
- Java Web 基础(一) 基于TCP的Socket网络编程
一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...
- python之Socket网络编程
什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...
随机推荐
- 【LeetCode】158. Read N Characters Given Read4 II - Call multiple times
Difficulty: Hard More:[目录]LeetCode Java实现 Description Similar to Question [Read N Characters Given ...
- Storm流处理项目案例
1.项目框架 ======================程序需要一步一步的调试===================== 一:第一步,KafkaSpout与驱动类 1.此时启动的服务有 2.主驱动类 ...
- 2n皇后问题【dfs】
<题目链接> 题目描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后 ...
- 洛谷P1432 倒水问题(CODEVS.1226)
To 洛谷.1432 倒水问题 题目背景 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were co ...
- 8.6 正睿暑期集训营 Day3
目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...
- (转)Java atomic原子类的使用方法和原理(一)
在讲atomic原子类之前先看一个小例子: public class UseAtomic { public static void main(String[] args) { AtomicIntege ...
- (素材源代码)猫猫学IOS(四)UI之半小时搞定Tom猫
下载地址:http://download.csdn.net/detail/u013357243/8514915 以下是执行图片展示 制作思路以及代码解析 猫猫学IOS(四)UI之半小时搞定Tom猫这里 ...
- mac pro 如何让终端默认运行python3.X而不是2.7
Mac版本的Python默认是2.7,安装高版本后需要修改为你安装的版本. 1,首先打开终端 open ~/.bash_profile 打开配置文件 2. 写入python的外部环境变量(本人的版本是 ...
- C# ConcurrentDictionary实现
ConcurrentDictionary的源码看了很多遍,今天抽点时间整理一下,它的实现比Dictionary要复杂很多,至于线程安全我觉得比较简单,用的是lock的思想.首先我们来看看它的源码. p ...
- jQuery()方法的第二个参数
关于jQuery()方法的第二个参数,有下面这几种用法: 1.jQuery(selector, [context]) 这种用法,相当于 $(context).find(selector) 或者 con ...