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/   

  1 siege -c100 -r5 url #对url地址进行100个并发用户5次的测试
  2 ##############我的WebServer############
  3 Transactions:                    500 hits
  4 Availability:                 100.00 %
  5 Elapsed time:                   8.87 secs
  6 Data transferred:               0.60 MB
  7 Response time:                  0.75 secs
  8 Transaction rate:              56.37 trans/sec
  9 Throughput:                     0.07 MB/sec
 10 Concurrency:                   42.26
 11 Successful transactions:         500
 12 Failed transactions:               0
 13 Longest transaction:            3.95
 14 Shortest transaction:           0.01
 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 16 Transactions:                    500 hits
 17 Availability:                 100.00 %
 18 Elapsed time:                   8.64 secs
 19 Data transferred:               0.60 MB
 20 Response time:                  0.66 secs
 21 Transaction rate:              57.87 trans/sec
 22 Throughput:                     0.07 MB/sec
 23 Concurrency:                   37.96
 24 Successful transactions:         500
 25 Failed transactions:               0
 26 Longest transaction:            2.87
 27 Shortest transaction:           0.01
 28 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 29 Transactions:                    500 hits
 30 Availability:                 100.00 %
 31 Elapsed time:                   8.58 secs
 32 Data transferred:               0.60 MB
 33 Response time:                  0.62 secs
 34 Transaction rate:              58.28 trans/sec
 35 Throughput:                     0.07 MB/sec
 36 Concurrency:                   36.41
 37 Successful transactions:         500
 38 Failed transactions:               0
 39 Longest transaction:            3.01
 40 Shortest transaction:           0.01
 41 
 42 ##############本地Nginx################
 43 Transactions:                    500 hits
 44 Availability:                 100.00 %
 45 Elapsed time:                   5.07 secs
 46 Data transferred:               0.29 MB
 47 Response time:                  0.02 secs
 48 Transaction rate:              98.62 trans/sec
 49 Throughput:                     0.06 MB/sec
 50 Concurrency:                    2.40
 51 Successful transactions:         500
 52 Failed transactions:               0
 53 Longest transaction:            0.08
 54 Shortest transaction:           0.00
 55 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 56 Transactions:                    500 hits
 57 Availability:                 100.00 %
 58 Elapsed time:                   5.19 secs
 59 Data transferred:               0.29 MB
 60 Response time:                  0.02 secs
 61 Transaction rate:              96.34 trans/sec
 62 Throughput:                     0.06 MB/sec
 63 Concurrency:                    2.40
 64 Successful transactions:         500
 65 Failed transactions:               0
 66 Longest transaction:            0.08
 67 Shortest transaction:           0.00
 68 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 69 Transactions:                    500 hits
 70 Availability:                 100.00 %
 71 Elapsed time:                   5.15 secs
 72 Data transferred:               0.29 MB
 73 Response time:                  0.02 secs
 74 Transaction rate:              97.09 trans/sec
 75 Throughput:                     0.06 MB/sec
 76 Concurrency:                    1.83
 77 Successful transactions:         500
 78 Failed transactions:               0
 79 Longest transaction:            0.05
 80 Shortest transaction:           0.00
 81 ##############本地httpd################
 82 Transactions:                    500 hits
 83 Availability:                 100.00 %
 84 Elapsed time:                   5.18 secs
 85 Data transferred:               0.11 MB
 86 Response time:                  0.02 secs
 87 Transaction rate:              96.53 trans/sec
 88 Throughput:                     0.02 MB/sec
 89 Concurrency:                    2.18
 90 Successful transactions:         500
 91 Failed transactions:               0
 92 Longest transaction:            0.18
 93 Shortest transaction:           0.00
 94 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 95 Transactions:                    500 hits
 96 Availability:                 100.00 %
 97 Elapsed time:                   5.17 secs
 98 Data transferred:               0.11 MB
 99 Response time:                  0.02 secs
100 Transaction rate:              96.71 trans/sec
101 Throughput:                     0.02 MB/sec
102 Concurrency:                    1.55
103 Successful transactions:         500
104 Failed transactions:               0
105 Longest transaction:            0.17
106 Shortest transaction:           0.00
107 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
108 Transactions:                    500 hits
109 Availability:                 100.00 %
110 Elapsed time:                   5.14 secs
111 Data transferred:               0.11 MB
112 Response time:                  0.02 secs
113 Transaction rate:              97.28 trans/sec
114 Throughput:                     0.02 MB/sec
115 Concurrency:                    1.77
116 Successful transactions:         500
117 Failed transactions:               0
118 Longest transaction:            0.12
119 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

转载于:https://www.cnblogs.com/wunaozai/p/3949324.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postgresql调优

http://blog.pgaddict.com/posts/performance-since-postgresql-7-4-to-9-4-pgbench硬件和系统配置操作系统Ubuntu13.04系统位数64CPUIntel(R) Core(TM)2 Duo CPU内存4G硬盘Seagate ST2000DM001-1CH164测试工具PostgreSQL-9.1.11测试工具工具名称pgbench数据量200W(…

操作系统--进程状态切换以及cpu调度(转)

http://www.cnblogs.com/coder2012/p/3204730.html 进程的状态转换 进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。 进程状态 执行态run:进程正在使用CPU等待态wait:进程正在等待I/O完成,不在使…

oracle打开当前表的编辑,oracle sqlplus常用命令

Oracle sqlplus 常用命令1、查看当前库的所有数据表:SQL> select TABLE_NAME from all_tables;select * from all_tables;SQL> select table_name from all_tables where table_name like ‘u’; TABLE_NAME———————————————default_auditing_o…

在Exchange 2010中重建Exchange安全组

问题:有时候,重新安装Exchange 2010会corrupt掉Exchange安全组,或者出现重复的组。用户在这种情况下会出现访问被拒的情况。分析:我们可以删掉这些安全组,然后最这些安全组进行重建:当你prepare ad的时候,由于OtherWel…

1023:坑爹的黑店

题目描述 今天小明去了一个风景如画的地方散心,但是自己带的饮料喝完了,小明口渴难耐,见不远处有家小商店,于是跑去买饮料。小明:“我要买饮料!”店主:“我们这里有三种饮料,矿泉水1…

php判断电脑浏览器模拟手机访问网页,在PC上测试移动端网站和模拟手机浏览器的5大方法...

查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp。一、Chrome*浏览器 chrome模拟手机总共有四种方…

带弹出列表的EditText

最近做的一个Andriod里有一个这个要求,一个东西需要输入,但同时可以在列表直接选择。看到这个需求,瞬间想到了QQ的登录界面,那个账号输入的控件正式我所需要的。 这个账号输入框右边有一个按钮,点击可以显示一个下拉列…

SICP第三章题解

目录 SICP第三章题解ex3-17ex3-18ex3-19队列ex3-21ex3-22ex3-24ex3-253.4 并发:时间是一个本质问题ex3-383.4.2 控制并发的机制ex3-39ex3-41ex3-42串行化、序列化ex3-44串行化的实现ex3-47死锁3.5 流ex3-50序列加速器SICP第三章题解 标签(空格分隔&#…

linux cp 目录不存在自动创建,linux – 如果不存在,如何cp文件和创建目录?

我想将svn存储库中的修改文件复制到另一个目录,同时保留其目录结构.在阅读awk和xargs manpage之后,我找到了一种方法来获取更改的文件名,如下所示:$svn status -q | awk { print $2 } | xargs -d \\n -I {} cp {} /tmp/xen/但问题是以这种方式不保留目录结构,我想复…

ios 中 KVO

KVO(Key value observe)键值观察,是ios中的一种核心的概念,简单的理解为当某一个对象A(或者多个对象)要想监听对象的B的一个或者多个属性发生变化时,就是用这种机制。 KVO的优点 当某个对象有个…

获取win7时区所有信息

打开命令行工具: tzutil /l# 或者输入到文件中tzutil /l > data.txt 1 # -*- utf-8 -*-2 3 """获取win7所有时区信息,并写入到sql语句中4 5 Usage: python data.py -f data.txt -o data.sql6 """7 8 if __name__ &quo…

linux kill命令信号,Linux kill 命令详解

Linux kill 命令很容易让人产生误解,以为它仅仅就是用来杀死进程的。我们来看一下 man page 对它的解释:kill - send a signal to a process.从官方的解释不难看出,kill 是向进程发送信号的命令。当然我们可以向进程发送一个终止运行的信号&a…

VSTO学习笔记(二)Excel对象模型

原文:VSTO学习笔记(二)Excel对象模型上一次主要学习了VSTO的发展历史及其历代版本的新特性,概述了VSTO对开发人员的帮助和效率提升。从这次开始,将从VSTO 4.0开始,逐一探讨VSTO开发中方方面面,本人接触VSTO…

zen-coding for notepad++,前端最佳手写代码编辑器

zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器。 zen-Coding插件支持多种编辑器,如UltraEdit,Notepad等。 温…

red hat linux 远程,Red Hat Linux 远程桌面 – 如何设置

远程访问 RHEL 计算机。运行 RHEL 7.3-8.1 的 Linux 计算机的远程桌面。从任何计算机、平板电脑或移动设备进行访问。立即免费试用!如果您是在家中或在旅途中工作,则可能需要一段时间才能在办公室或在家中访问台式计算机。如果该桌面恰巧在 Linux 操作系…

通过boundingRectWithSize:options:attributes:context:计算文本尺寸

转:http://blog.csdn.net/jymn_chen/article/details/10949279 之前用Text Kit写Reader的时候,在分页时要计算一段文本的尺寸大小,之前使用了NSString类的sizeWithFont:constrainedToSize:lineBreakMode:方法,但是该方法已经被iOS…

H264/AVC视频解码时AVC1和H264的区别

AVC1与H264的区别http://blog.csdn.net/qiuchangyong/article/details/6660253H.264 Video TypesThe following media subtypes are defined for H.264 video.Subtype FOURCC DescriptionMEDIASUBTYPE_AVC1 AVC1 H.264 bitstream without start codes.MEDIASUBTYPE…

Linux命令行显示无效的命令,LINUX 命令ifconfig 无效

在安装完成linux后,进入终端,输入命令行ifconfig,会提示bash: ifconfig: command notfound。这是因为在我们的环境变量里,还没有设置完整变量。如果我们输入/sbin/ifconfig或/usr/bin/gcc就可以执行命令行。为了不输入命令行的完整…

移动后端支持平台Parse将API由Ruby迁移到Go

Charity Majors是移动后端支持平台Parse的工程师。近日,他撰文介绍了他们将API从Ruby迁移到Go的过程。\\2011年,Parse借助Ruby on Rails快速推出了第一个版本。他们用Unicorn作为HTTP服务器,用Capistrano部署代码,用RVM管理环境&a…

面向对象三大特征之继承(extends)——Java笔记(六)

继承:从一般到特殊的关系,是一种拓展关系,子类对象是父类的一种,也可称为”is a“的关系泛化:把子类里的共性抽取到父类里的来的过程特化:子类在父类的基础上上定义了自己特有的行为特征的过程格式&#xf…