阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

GoAhead WebServer移植小结

106次阅读
没有评论

共计 2353 个字符,预计需要花费 6 分钟才能阅读完成。

VxWorks 中自带了 WebServer 组件,在 network components->network protocols-> network applications 下选择 http server 即可。也可以采用 rapid control for Web。这里我们介绍 GoAhead WebServer,它是一个源码免费、功能强大、可以运行在多个平台的嵌入式 WebServer。

GoAhead WebServer 的主要特性有:
l 支持 ASP
l 嵌入式的 JavaScript
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 工程中:
①  下载最新的 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 Javascript 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 信号。

GoAhead 的详细介绍:请点这里
GoAhead 的下载地址:请点这里

相关阅读:

GoAhead 上实现文件上传到嵌入式 Web 服务器上 http://www.linuxidc.com/Linux/2011-10/45429.htm

GoAhead 2.5 嵌入式 Web 服务器移植到 ARM9 2440 + Linux 中 http://www.linuxidc.com/Linux/2011-09/43267.htm

GoAhead 移植到 uClinux 平台上 http://www.linuxidc.com/Linux/2011-01/31076.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计2353字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中