新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于uIP与AJAX的动态Web服务器设计

基于uIP与AJAX的动态Web服务器设计

作者:时间:2012-11-07来源:网络收藏

而uIP为底层系统提供了4个接口函数:uip_init()完成协议栈的初始化;uip_input()用于处理从以太网接收到的IP数据包;uip_perio dic()用于协议内核周期性地对各TCP连接的轮询;uip_udp_periodic()则用于UDP服务下对各UDP连接的轮询。其中,uip_input()和uip_per iodic()在协议的内部采用同一个函数void uip_process(u8_t flag)实现,区别在于调用的参数不同。uIP主程序清晰地展示了各接口函数的调用方法,其主程序流程图如图2所示。

本文引用地址://m.amcfsurvey.com/article/148264.htm

d.JPG


uIP的各处理程序会调用UIP_APPCALL()进行应用程序处理,用户需要将UIP_APPCALL宏定义为实际的应用函数名,应用程序就可以挂接到uIP中,而uip_flags是协议栈提供给应用层查询的状态变量。

2 动态Web服务器的实现
在uIP中已经提供了webserver的应用实例,用户可以参考它并根据自己的需求进行设计。为了实现浏览器与服务器之间的交互性,本文采用了CGI动态Web技术。CGI(Common Gateway Interface)是Web服务器与外部扩展应用程序交互的一种标准接口。目前,服务器端的动态Web技术除CGI外,还有ASP、PHP、JSP等解决方案,但它们或者是针对某种语言的,或者是依赖于特定的操作系统或商业软件,只有CGI技术适用于资源有限、编程语言受限的。设计的Web服务器的结构如图3所示。

f.JPG


在系统初始化后Web服务器开始监听80端口,一旦有客户端请求连接,uIP就为其分配一个连接项。服务器在收到HTTP请求后,首先依据请求文件的类型来判断该请求是动态请求还是静态请求,如果请求的是HTML类型的文件则为静态请求;如果请求的是shtml类型的则为动态请求。
对于静态请求,服务器会直接查询其文件系统是否存在该网页,如果存在就响应客户端的请求;如果不存在就响应404请求错误网页。为了减少存储资源的使用,uIP没有一般的文件系统,而是将所有静态网页存储为常量数组,并将这些数组串联成一个文件链表,采用轮询的方式按照网页名称进行查询。

c语言相关文章:c语言教程




评论


相关推荐

技术专区

关闭