Web服务器 : Wind Web Server
我最近也在学习这方面的内容,在此留下一个问题,希望各位高手能踩一下!
各位高手好,小弟最近在学习VXWORKS下Webserver的移植,借助网上的指导资料一步步实验,但遇到以下问题:在步骤 加入编译选项时 -DWEBS -DUEMF -DOS="VXWORKS" -DVXWORKS -DWEBS_PAGE_ROM 我想问一下各位是把这些编译选项加到哪个地方?
我在实验时是加到Webserver 工程下的Makefile文件里的CFLAGS 的定义中的,但是在我编译之后它又恢复到原来没有修改前的状态了,直接导致我的编译步骤不能成功,请各位高手帮忙指点,谢谢!
给你们参考:
VxWorks中自带了WebServer组件,在network components->network protocols-> network applications下选择http server即可。也可以采用rapid control for Web。这里我们介绍GoAhead WebServer,它是一个源码免费、功能强大、可以运行在多个平台的嵌入式WebServer。
GoAhead WebServer的主要特性有:
l 支持ASP
l 嵌入式的J**aScript
l 标准的CGI执行
l 内存中的CGI处理GoFroms
l 扩展的API
l 快速响应,每秒可处理超过50个请求
l 完全和标准兼容
l 如果不包含SSI,仅要求60K的内存;包含SSI,要求500K内存
l web页面可以存在ROM或文件系统中
l 支持多种操作系统,包括eCos 、LINUX 、LynxOS 、QNX 、VxWorks 、WinCE、pSOS等
下面讲述一下通过downloadable工程来架设GoAhead WebServer的过程,当然也可以用类似的方*把它集成到bootable工程中:
① 到http://12.129.4.11/webserver/webserver.htm下载最新的GoAhead Webserver。
② 建立基于bsp 的downloadable 工程, 名称为 goaheadweb 。
③ 将下列下载的源文件加入到工程中:
balloc.c
base64.c
default.c
ejlex.c
ejparse.c
emfdb.c
form.c
h.c
handler.c
md5c.c
mime.c
misc.c
page.c
ringq.c
rom.c
security.c
sock.c
sockGen.c
sym.c
uemf.c
um.c
umui.c
url.c
value.c
webrom.c
webs.c
asp.c
websuemf.c
cgi.c
/vxworks/main.c
④ 参考/vxworks/makefile来修改工程的makefile。
在makefile 中增加定义 -DWEBS -DUEMF -DOS="VXWORKS" –DVXWORKS
如下:
CFLAGS = -g -m486 -ansi -nostdinc -DRW_MULTI_THREAD -D_REENTRANT -DWEBS -DUEMF -DOS="VXWORKS" -DVXWORKS -fvolatile -nostdlib -fno-builtin -fno-defer-pop -I. -IE:/Tornado-x86/target/h -DCPU=I80486
如果需要增加用户管理、存取控制支持,则还需要增加下列定义
-DUSER_MANAGEMENT_SUPPORT
-DDIGEST_ACCESS_SUPPORT
具体可以参考原makefile进行。
⑤ 根据文档修改/vxworks/main.c。
设置根目录,例如
#define ROOT_DIR T("/tffs0/webs")
设置缺省主页
websSetDefaultPage(T("index.asp"));
利用ftp等工具将index.asp等主页下到tffs0中。
⑥ 编译为 goaheadweb.out 下载。
⑦ 在 WindShell 下加载webserver
sp websvxmain
⑧ 在浏览器端键入 http://192.168.0.2/index.asp 就可以访问到 /tffs0/webs/index.asp 文件了。
⑨ Asp编程:
GoAhead Asp编程首先需要预先定义Asp函数,在main.c的函数initWebs()中有如下的例子:
websAspDefine(T("aspTest"), aspTest);
这里将aspTest()定义为Asp函数,用户可提供相关的函数来进行想要完成的功能,例如:
/*
* Test J**ascript binding for ASP. This will be invoked when "aspTest" is
* embedded in an ASP page. See web/asp.asp for usage. Set browser to
* "localhost/asp.asp" to test.
*/
static int aspTest(int eid, webs_t wp, int argc, char_t **argv)
{
char_t *name, *address;
if (ejArgs(argc, argv, T("%s %s"), &name, &address) < 2) {
websError(wp, 400, T("Insufficient args\n"));
return -1;
}
return websWrite(wp, T("Name: %s, Address %s"), name, address);
}
然后在Asp的页面中调用Asp函数即可,如调用上述例子:
<h2>Expanded ASP data: <% aspTest("Peter Smith", "112 Merry Way"); %></h2>
※ 注意:如果要停止或重起WebServer,请不要使用taskDelete 或者 td来删除webserver任务,而是调用kill()来给webserver任务发送9或者15信号。
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |