生产实习报告封面及是内容模板.docVIP

  • 6
  • 0
  • 约1.01万字
  • 约 18页
  • 2016-12-24 发布于湖南
  • 举报
电子科技大学 通信与信息工程学院 生 产 实 习 学号: 2010013050034 姓名: 代玥玥 指导教师: 许都 电子科技大学通信与信息工程学院 生产实习考核表 学生姓名 代玥玥 学号 2010013050034 专业 通信工程 生产实习课题 Luci 用户界面设计 生产实习单位 电子科大通信与信息工程学院 指 导 教 师 许都 职 称 博导 指导教师评语: 指导老师(签名): 实习成绩(满分50分): 分 论文成绩(满分50分): 分 生产实习总成绩: 分 实习单位(盖章): 一、实习目的和任务 学习网络理论,了解无线网络拓扑,探讨分布与集中式管理对无线网络的优化,以及用户与无线网络管理之间的交互。设计使用web实现用户与无线网络管理之间的交互,设计用户界面,方便直观的反应交互内容。 二、实习内容和要求 实验要求: 1.了解luci用户界面的设计 2.学习lua脚本语言,html语言以及数据库相关信息 3.使用lua,html,sql设计用户界面,实现用户与无线网络之间的交互 实验内容: 一、luci用户界面 luci作为web服务器,实现客户端web页面配置功能。对于request处理方式,采用的是cgi,而所用的cgi程序就是luci,工作框架如下图所示: Client端和serv端采用cgi方式交互,uhttpd服务器的cgi方式中,fork出一个子进程,子进程利用execl替换为luci进程空间,并通过setenv环境变量的方式,传递一些固定格式的数据(如PATH_INFO)给luci。另外一些非固定格式的数据(post-data)则由父进程通过一个w_pipe写给luci的stdin,而luci的返回数据则写在stdout上,由父进程通过一个r_pipe读取。 luci程序流程 luci作为web服务器的cgi程序,是通过execl函数替换到进程空间的,并且详细说明了它与其它进程的交互方法。 它首先执行的是running()函数,其中create出另一个执行体httpdispatch,每次httpdispatch执行yield返回一些数据时,running()函数就读取这些数据,做相应处理,然后再次执行resume(httpdispath),……如此直到httpdispatch执行完毕 首先说明一下代码组成,在文件系统中,lua语言的代码不要编译,类似一种脚本语言被执行,还有一些uhttpd服务器的主目录,它们是: /www/index.html /cgi-bin/luci /luci-static/xxx/xx.css、js、gif /usr/lib/lua/nixio.so、uci.so /luci/http.lua、dispatcher.lua、core… /controller/xxx.lua /model/xxx.lua /view/xxx.lua 节点树node-tree 在controller目录下,每个.lua文件中,都有一个index()函数,其中主要调用entry()函数,形如entry(path,target,title,order),path形如{admin,network,wireless},entry()函数根据这些创建一个node,并把它放在全局node-tree的相应位置,后面的参数都是该node的属性,还可以有其他的参数。其中最重要的就是target。 Createtree()函数就是要找到controller目录下所有的.lua文件,并找到其中的index()函数执行,从而生成一个node-tree。这样做的io操作太多,为了效率,第一次执行后,把生成的node-tree放在/tmp/treecache文件中,以后只要没有更新(一般情况下,服务器里的.lua文件是不会变的),直接读该文件即可。生成的node-tree如下: 这里要注意的是,每次dispatch()会根据path_info逐层索引,且每一层都把找到的节点信息放在一个变量track中,这样做使得上层node的信息会影响下层node,而下层node的信息又会覆盖上层node。比如{/admin/system},最后的auto=false,targe

文档评论(0)

1亿VIP精品文档

相关文档