本来是想实现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. 【Java】 剑指offer(35) 复杂链表的复制

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现函数ComplexListNode* Clone(Compl ...

  2. 《Android进阶之光》--RxJava

    No1: RxJava使用 dependencies{ compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2. ...

  3. 幕布V1.1.9最新版漏洞集合

    0X00 前言 幕布本人最早接触是在P神的知识星球里面看到P神推荐的,后来下了个用着还挺好用. 之前一直都放一些零零散散的笔记,最近整理的时候,一时兴起,本着漏洞源于生活的态度,遂对幕布的安全性做了些 ...

  4. Android应用开发-Activity

    Android四大组件:Activity,Service,Broadcast Receiver,Content Provider Activity是Context的子类,同时实现了Window.Cal ...

  5. VM浏览器不能访问

    Issue: when start WAS DManager&WAS AppServer then it could be reach in VM local browser but coul ...

  6. Windows 修改host文件

    在实际的开发中,有时我们会修改windows的hosts文件,达到指定域名映射到指定ip上的功能.修改方式如下: 1. windows 中hosts文件位置(win10): C:\Windows\Sy ...

  7. 细解javascript中的this关键字

    JavaScript函数中的this指向并不是在函数定义的时候确定的,而是在调用的时候确定的.换句话说,函数的调用方式决定了this指向. 一. 全局上下文 在函数外部,无论是否在严格模式下,this ...

  8. 运营商DNS系统安全解决方案

    DNS系统面临的主要风险 目前,DNS面临的安全问题主要可以分为三类:DNS欺骗攻击.拒绝服务攻击.系统漏洞,下文将分别进行介绍.  DNS欺骗攻击 当一个DNS服务器遭到欺骗攻击,使用了来自一个恶 ...

  9. Python3练习题系列(03)

    题目: 思考While循环,看看它的特点是什么? 知识点: while循环 分析: 特点:while-loop(while 循环).while-loop 会一直执行它下面的代码片段,直到它对应的布尔表 ...

  10. 关于C#报空Object is null 错误的看法

    昨天项目的一个问题 :在切换场景页面的时候,报空指针的错,总显示没有找到对象.由于代码是之前就早写好的了,只是根据最上层领导的意见修改下个别显示UI,所以也就一定是后来的那些代码问题.果不其然,加的新 ...