# cppserver **Repository Path**: dunhedunhe/cppserver ## Basic Information - **Project Name**: cppserver - **Description**: Unix大作业:c++实现的简单的多线程服务器,还有性能测试脚本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-18 - **Last Updated**: 2024-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: Server, 多线程 ## README ## 实验环境 **实验环境** centos7系统,使用c++11标准。 **运行说明** 一共三个文件:index.html,server.cpp,testServer.py(测试脚本) 将提供的index.html文件放在同一目录下,编译server.cpp,使用命令: g++ -std=c++11 -pthread server.cpp -o server 然后运行编译后的程序: ./server 在浏览器中查看html网页,访问:http://主机ip:8089 **说明** 程序中使用了C++11的特性,所以请确认您的编译器支持 C++11 或更高版本。 ## 效果展示 首先在虚拟机本地的火狐浏览器中尝试连接: ![img](assets/clip_image002.jpg) 然后在宿主机Windows的浏览器中访问网页: ![img](assets/clip_image004.jpg) 在控制台可以看到服务器程序输出的连接信息: ![img](assets/clip_image006.jpg) 它打印了客户端连接的ip和端口。 ## 性能测试 ### 线程池大小10 ```c++ const int BACKLOG = 50; // 最大连接数 const size_t THREAD_POOL_SIZE = 10; // 设置线程池大小 ``` 下面是Python脚本的测试结果,在脚本中并发发送请求,根据响应结果调用绘图库绘图,图中**横坐标是发送的请求,纵坐标是响应的时间(单位:秒)**: ![image-20240918100650768](assets/image-20240918100650768.png) ![image-20240918100656990](assets/image-20240918100656990.png) ### 设置服务器延迟后 ![image-20240918100814750](assets/image-20240918100814750.png) ![image-20240918100822863](assets/image-20240918100822863.png) ![image-20240918100828823](assets/image-20240918100828823.png) ### 更大的线程池 ```c++ const int BACKLOG = 200; // 最大连接数 const size_t THREAD_POOL_SIZE = 100; // 设置线程池大小 ``` ![image-20240918100924640](assets/image-20240918100924640.png) ![image-20240918100929233](assets/image-20240918100929233.png) ![image-20240918100933640](assets/image-20240918100933640.png) ```c++ const int BACKLOG = 5000; // 最大连接数 const size_t THREAD_POOL_SIZE = 1000; // 设置线程池大小 ``` ![image-20240918100957624](assets/image-20240918100957624.png) ![image-20240918101001392](assets/image-20240918101001392.png) ![image-20240918101005112](assets/image-20240918101005112.png)