经典C语言项目Webbench详解
Webbench是一个在linux下使用的非常简单的命令行网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。 这个项目由纯C实现,使用linux系统调用。命令行参数如下: 项目地址: https://github.com/EZLippi/WebBench 由于C语言没有原生的HTTP包,需要用字符串实现HTTP协议,所以是非常麻烦的。另外还需要使用linux系统下的多进程以及管道。这些都是这个项目的难点。 如果直接用Go语言来写,会非常简单。因为Go语言这些都有现成的库。 项目整体流程 1.解析程序运行时的参数。 2.根据选择的http协议组装报文。 3.开始压力测试。 4.获取压力测试的结果。 1.解析程序运行时的参数 其实这就是传说中的argc argv[],不过程序在此处用到了C语言的getopt_long函数。想要了解如何解析Linux命令行参数,去查getopt_long这个函数 2.组包 HTTP请求协议包使用自己组包的方法,这也是C语言比较麻烦的地方。 3.压力测试 先检查服务器是否可以联通,随后创建供父进程和子进程通信的管道。 子进程根据配置发送报文,并且通过管道向父进程回报结果。 4.统计结果 这部分的代码比较简单,子进程通过管道来向父进程返回结果