没有合适的资源?快使用搜索试试~ 我知道了~
U201610504_刘逸帆_实验报告1
需积分: 0 0 下载量 23 浏览量
2022-08-03
21:47:19
上传
评论
收藏 6.63MB PDF 举报
温馨提示
试读
45页
1. 可配置 Web 服务器的监听地址、监听端口和虚拟路径 2. 能够单线程处理一个请求 3. 从连接套接字接收 http 请求报文,并根据请求报文的确定用户请
资源详情
资源评论
资源推荐
I
华中科技大学计算机学院
《计算机通信与网络》实验报告
姓名 刘逸帆 班级 CSIE1601 学号 U201610504
项目
Socket 编程
(30%)
数据可靠传输协议设计
(15%)
CPT 组网
(15%)
实验报告
(20%)
平时成绩
(20%)
总分
得分
教师评语:
教师签名:
给分日期:
II
目
录
实验一
SOCKET
编程实验 ................................................................................................................................................... 1
1.1
环境
.............................................................................................................................................................................................. 1
1.2
系统功能需求
........................................................................................................................................................................... 1
1.3
系统设计
.................................................................................................................................................................................... 2
1.4
系统实现
.................................................................................................................................................................................... 3
1.5
系统测试及结果说明
............................................................................................................................................................. 9
1.6
其它需要说明的问题
........................................................................................................................................................... 14
实验二
数据可靠传输协议设计实验 ............................................................................................................................... 15
2.1
环境
............................................................................................................................................................................................ 15
2.2
实验要求
.................................................................................................................................................................................. 15
2.3
协议的设计、验证及结果分析
......................................................................................................................................... 15
2.4
其它需要说明的问题
........................................................................................................................................................... 22
实验三
基于
CPT
的组网实验 ............................................................................................................................................ 23
3.1
环境
............................................................................................................................................................................................ 23
3.2
实验要求
.................................................................................................................................................................................. 23
3.3
基本部分实验步骤说明及结果分析
............................................................................................................................... 25
3.4
综合部分实验设计、实验步骤及结果分析
................................................................................................................. 36
3.5
其它需要说明的问题
........................................................................................................................................................... 41
心得体会与建议 ................................................................................................................................................................... 42
4.1
心得体会
.................................................................................................................................................................................. 42
4.2
建议
............................................................................................................................................................................................ 43
1
实验一 Socket 编程实验
1.1 环境
1.1.1 开发平台
操作系统:windows10
机器硬件:处理器 2.2GHz Intel Core i7、内存 16GB 1600MHz DDR3
开发软件:visual studio 2018
1.1.2 运行平台
操作系统:windows10
机器硬件:处理器 2.2GHz Intel Core i7、内存 16GB 1600MHz DDR3
1.2 系统功能需求
编写一个支持多线程处理的 Web 服务器软件,要求如下:
第一级:
1. 可配置 Web 服务器的监听地址、监听端口和虚拟路径。
2. 能够单线程处理一个请求。当一个客户(浏览器,输入 URL:http://127.0.0.1/index.html)
连接时创建一个连接套接字;
3. 从连接套接字接收 http 请求报文,并根据请求报文的确定用户请求的网页文件;
4. 从服务器的文件系统获得请求的文件。 创建一个由请求的文件组成的 http 响应报文。
(报文包含状态行+实体)。
5. 经 TCP 连接向请求的浏览器发送响应,浏览器可以正确显示网页的内容;
6. 服务可以启动和关闭。
第二级:
1. 支持多线程,能够针对每一个新的请求创建新的线程,每个客户请求启动一个线程为
该客户服务;
2. 在服务器端的屏幕上输出每一个请求的来源(IP 地址、端口号和 HTTP 请求命令行)
3. 支持一定的异常情况处理能力。
第三级:
2
1. 能够传输包含多媒体(如图片)的网页给客户端,并能在客户端正确显示;
2. 对于无法成功定位文件的请求,根据错误原因,作相应错误提示。
3. 在服务器端的屏幕上能够输出对每一个请求处理的结果。
4. 具备完成所需功能的基本图形用户界面(GUI),并具友好性
其他要求:
1. 操作系统:Windows
2. 语言:C++
3. 编程开发环境:Visual Studio 2008-2017 皆可
4. 必须基于 Socket 编程,不能直接借用任何现成的组件。
1.3 系统设计
1.3.1 系统架构
Web 服务器软件系统共包含 C++语言实现的 Web 服务器与基于 MFC 实现的 GUI 图形用户界
面两部分。
1.
使用
C++
设计
Web
服务器架构
Web 服务器使用 C++语言基于 socket 编程。在 Web 服务器的设计中,主要设计了三个类来
构建服务器:用于对服务器进行配置的 Config 类(由 Config.h 声明、Config.cpp 定义)、用
于初始化 winsock2 的 WinsockEnv 类(由 WinsockEnv.h 声明、WinsockEnv.cpp 定义)以及用于
具体实现 Web 服务器功能的 Server 类(由 Server.h 声明、Server.cpp 定义)。
2.
基于
MFC
设计
GUI
图形用户界面
Web 服务器的 GUI 界面由聊天室客户端界面 ChatRoomClient 修改而来。借助 GUI 界面,
用户应能够配置 Web 服务器的监听地址、监听端口、Web 主目录以及控制 Web 服务器的启动与
关闭。
1.3.2 功能模块划分
1. Web 服务器中各模块功能的划分
Config 类中定义了服务器地址、端口、服务器缓冲区大小、SOCKET 阻塞方式等常量,用
于在实例化 Server 类时进行配置。
WinsockEnv 类中定义了函数 Startup(),用于利用<winsock2.h>库中的 WSAStartup 函数
初始化 winsock 并保证启用的版本为 winsock2。
Server 类用于具体实现 Web 服务器功能,其中各成员函数的功能安排如下:
(1) 构造函数 Server():对于缺省参数的构造函数,直接使用 Config 类中配置的参数构
造一个服务器实例;对于传入了参数 string home 的构造函数,使用 home 中的字符串作为服
3
务器的主目录构造一个服务器实例。
(2)析构函数~Server():释放服务器实体所占用的资源并销毁该实例。
(3) WinsockStartup():用于初始化 Winsock。
(4) ServerStartup():直接使用 Config 类中配置的 IP 与 PORT 初始化 Server 实例。具
体包括创建 SOCKET,并绑定到 Config 类中配置的 IP 和 PORT。
(5) ServerStartup(string str_ip, int port, string str_home):使用传入参数中 IP
与 PORT 的值初始化 Server 实例。具体包括创建 SOCKET,并绑定到传入参数重的 IP 与 PORT。
(6) ListenStartup():用于开始监听客户端(即浏览器)请求。
(7) Loop():Web 服务器的主要工作流程,即循环执行"等待浏览器请求报文"->“向浏览
器发送响应报文”->"等待浏览器请求报文"。
另外为具体划分并实现公有函数对应的功能,设计了对应的保护成员函数 sendMessage
和 AcceptRequestionFromClient,分别用于向浏览器发送响应报文和接受并解析浏览器发来
的请求报文。
2.MFC 实现的 GUI 图形用户界面中各模块功能的划分
GUI 界面中有如下模块:IP 地址输入框、端口号输入框、Web 主目录路径输入框、Web 服
务器工作状态显示文本框以及分别用于控制 Web 服务器的启动与停止的两个按钮。每个模块的
具体功能描述如下:
(1) IP 地址输入框:用于输入配置 Web 服务器的监听地址,不进行填写时默认为 0.0.0.0;
(2)端口号输入框:用于输入配置 Web 服务器的监听端口,不进行修改时默认为 80 端口
(Http 请求常用端口);
(3) Web 主目录路径输入框:用于输入配置 Web 服务器的主路径路径名,不进行修改时默
认主目录为工程文件所在文件夹。
(4) Web 服务器工作状态显示文本框:用于显示 Web 服务器的工作状态,在文本框中能够
显示的信息包括 Web 服务器的启动流程、Web 服务器在启动后接受到请求报文的详情等。
(5) Web 服务器启动按钮:按下按钮时使用当前输入的配置启动 Web 服务器
(6) Web 服务器停止按钮:按下按钮时停用 Web 服务器。
其中用于控制 Web 服务器启动与关闭的两个按钮的激活状态为互斥关系,防止反复启动或
反复停用 Web 服务器。
1.4 系统实现
1.4.1 Web 服务器的实现
Web 服务器基于 Config、WinsockEnv、Server 三个类具体实现,其中 Server 类用于具体
实现 Web 服务器的功能。Server 类中一些关键成员函数的具体实现如下:
剩余44页未读,继续阅读
df595420469
- 粉丝: 24
- 资源: 310
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0