test webserver

This commit is contained in:
Yao15921243763
2023-09-30 23:16:14 +08:00
parent 0f77f4e86b
commit bf505768e8
10 changed files with 190 additions and 63 deletions

View File

@@ -1,24 +1,67 @@
# 基于cortex-m3-emulator实现哈希表并测试验证##
# 基于矽璓已实现的Lwip在ARM上实现基本的Web服务##
## 1. 简介
基于矽璓已实现的Lwip在ARM上实现基本的Web服务其功能支持IP、GateWay、DNS、子网掩码等网络参数的设置。
主要功能为web服务等待Http请求的到来解析Http报文后设置本机的网络参数信息在终端打印设置后的网络参数信息并返回浏览器客户端成功响应。
## 2. 数据结构设计说明
Server的网络结构参数为
```
struct ServerNet
{
char local_ip[20];
char local_mask[20];
char local_gw[20];
char local_dns[20];
}ServerNet;
```
主要实现了以下几个函数:
```
TcpThread: 建立socket监听循环等待网络通信事件的到来
HandleHttpRequest处理并解析Http报文得到网络参数信息
AddrUpdate 根据到来的参数,更新本机网络参数;
LwipShowIP显示网络参数信息包括IP、GateWay、DNS、子网掩码
LwipSetIP 设置网络参数信息包括IP、GateWay、DNS、子网掩码
ShowDns: 显示dns网址
SetDns 设置dns网址
```
除此之外,还包括两个工具函数:
```
SubstractServerNet 截取http报文的请求体格式为ip=192.168.1.9&netmask=255.255.255.0&iproute=192.168.1.1&dns=114.114.114.114
substring 截取字符串
```
## 3. 测试程序说明
1. 通过数据线将开发板连接电脑,并通过网线连接使开发板接入家庭局域网。
2. 将TestWebserver注册为shell 命令编译前通过menuconfig打开lwip和TestWebserver功能。
3. 将编译成功的XiZi-edu-arm32.bin文件烧录到arm板子。烧录bin文件前需要将开发板boot引脚拉高(盖上跳帽)上电后再按下reset按键之后可以点击烧写工具的执行按钮等待烧写完成。
4. 将boot引脚拉低摘下跳帽按下reset按键使用串口工具显示xiuos的命令行界面。
5. 将开发板的本机ip通过setip命令设置为与电脑端在同一个局域网之下利用ping命令检测成功通信。
6. 运行TestWebserver命令验证功能。
## 4. 运行结果(##需结合运行测试截图按步骤说明##
![image](ConfigOpen.png)
打开menuconfig之后将test_hash_map开启(y),保存后退出
<img width="800" src="./photos/1.png"/>
![image](CompileSuccess.png)
编译XiZi-cortex-m3-emulator.elf成功
烧录程序boot引脚拉高按下reset按键。
![image](ShellCommand.png)
启动qemu模拟Xiuos操作系统验证TestHash注册Shell命令
<img width="800" src="./photos/2.png"/>
![image](TestHash.png)
执行TestHash命令打印测试结果。
点击执行烧录,程序烧录成功。
<img width="800" src="./photos/3.png"/>
打开串口调试工具xiuos程序成功在开发板上运行。
<img width="800" src="./photos/4.png"/>
利用setip命令修改开发板ip,使得开发板和电脑在同一个局域网内并使用ping命令测试。
<img width="800" src="./photos/5.png"/>
在服务端运行TestWebserver命令打开index.html设置网络参数信息点击提交发送http请求。
<img width="800" src="./photos/6.png"/>
web服务收到http请求后并打印post请求报文以及修改后的开发板的网络参数信息包括IP、子网掩码、GateWay和DNS。