基于精简TCP/IP协议栈的信息家电网络服务器
更适合于嵌入式系统下面即是WEB服务器的大体框架。
#include<uip.h>
void http_listen_init(void){
uip_listen(80);
} //http listen初始化
void listen_init(void){
http_listen_init();
}
void applicaTIon(void){
if(uip_connected()) //如果当前的连接状态为connected
switch (uip_conn->lport){
case htons(80):
httpd; //如果80 PORT有数据到达,则调用HTTP处理HTML文件的传送
}
}
首先,服务器与客户机建立连接,再通过侦听端口80,判断是否有客户请求到达,若有则将调用应用程序httpd进行相应处理,否则,继续侦听。Httpd是用于处理HTTP请求的应用程序,具体设计在协议栈uIP中有描述。uip.h是协议uIP的一个头文件。
在应用软件上实现简单WEB服务器功能,其主要由两个模块构成:一是用户登陆模块;二是家电监控模块。用户登陆模块需要解决用户的合法性检查,即接收用户输入的用户名和密码,进行校验,合法则进入家单监控页面,非法则发出警告页面。家电监控模块针对各家电的硬件情况,收集信息家电的状态码,并通过网页形式显示。
在两个模块中,有一部分相似的处理,即对输入的数据进行解析。现在定义数组htmlinputs来存放解析后的信息。对表单输入的数据进行解析后,将其name值和value值分别存放在htmlinput_struct.name和htmlinput_struct.value里,便于以后的处理。变量htmlinputcount存放表单里输入变量的个数。定义如下:
struct htmlinput_struct htmlinputs[100];
int htmlinputcount=0;
除此外,定义函数get_inputs()和translate()对输入的数据进行处理。
Int get_inputs();//将从表单输入的数据分别装到对应的name/value数据队中
Void translate(char*sourcestr);//解读编码URL字符
具体程序代码在此就不再多述。
整个上层应用程序的流程图如图7所示。
5 小结
以太网作为接口,以S1C33系列微处理器为硬件平台,利用软件化的精简嵌入式TCP/IP,能够实现HTTP服务。当然在系统成熟的条件下,还可以考虑把以太网接口替换为无线网络接口。本文为信息家电网络接入Internet提供了一种无需额外的PC或网关设备的解决方案。这种低成本、高性能的方案,具有可靠、灵活的特点,适用于通信速率不太、允许时延大于1s且需要连接Internet的家庭自动化设备。此外用户还可以根据需要,按照此方法,构造自己的网络服务器,可为普通的电气设备或系统如公共服务设备、家庭医疗保健设备、工业自动化系统等,赋予接入Internet的能力。
- 基于以太网的可视对讲系统应用(08-30)
- 嵌入式TCP/IP协议单片机技术在网络通信中的应用(04-13)
- 8位机嵌入式TCP通信速度的研究(05-19)
- 一文告诉你最全的芯片封装技术(06-28)
- 局域网通信协议详解及选择原则(02-06)
- 基于S3C2410的智能家居数据采集系统设计(04-15)