Chinaunix首页 | 论坛 | 博客
  • 博客访问: 368883
  • 博文数量: 242
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1134
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-20 10:53
文章分类

全部博文(242)

文章存档

2015年(1)

2014年(10)

2013年(18)

2012年(213)

分类:

2012-11-09 17:21:21

       GoAhead Web 服务器是一款主要面向嵌入式系统的WEB服务器,它的目标也许不在于目前的WEB服务器市场,而是面向当嵌入式系统深入我们的工作与生活的明天,那时,它也许会成为使用最广泛的WEB服务器。

       GoAhead Web服务器是GoAhead公司的Embedded Management Framework产品的一部分,这个软件包主要用于解决未来嵌入式系统开发的相关问题。这款WEB服务器非常小巧,它的WIN CE版本编译后的大小还不到60k,它的输出通常也是面向一些小屏幕设备。在性能方面,使用一颗24MHz的68040处理器,它的响应速度为20次/秒,使用266MHz的Pentium处理器可以达到50次/秒的响应速度。

       仅管它的体积非常小巧,GoAhead WEB服务器提供了不少的服务特性。它支持ASP,嵌入的JAVASCRPT与内存CGI处理。不过有人也许会置疑对嵌入式系统而言,对ASP的支持有否有这个必要。而嵌入的JAVASCRIPT解释引擎则是不得不要的选择,因为得用它创建动态服务器内容,而且ASP也要用到它。

       到目前为止,GoAhead的源码完全免费,使用它无需交纳版税或者许可证费用。对一些硬件开发者而言,这种做法比较普遍,例如SUN旗下的众多开源系统。这样作的主要原因是GoAhead公司希望它成为未来嵌入式环境下的WEB服务器标准平台并看好日益增长的智能化嵌入式设备的市场。

       因为GoAhead发行包中包含C语言的源码和makefile,理论上,你可以在非嵌入式环境下很好的使用GoAhead Web服务器。它的参考平台有Windows CE, Wind River VxWorks, Linux, Lynx, QNX与Windows 95/98/NT。它基本上属于一个HTTP1.0标准的WEB服务器,对一些HTTP1.1的特性如(持久连接)也提供了支持。

       无可否认,GoAhead WEB服务器是一款面向特定细分市场的产品,也许目前对于这个市场外的大多数人来说很难对它投以太多的专注。但众多的分析家和计算机产业领导者(包括 LINUX之父Linus Torvalds)都相信在未来的计算机世界,智能化嵌入式系统将会扮演一个极在重要的角色,当这个市场成熟起来的时候,就是GoAhead大展站拳脚之时。

优点:免费,体积小巧,支持多平台,完全针对嵌入式系统设计,嵌入的JavaScript与动态数据页支持。
缺点:对ASP的支持意味着要依靠微软平台,很少的安全方面的考虑。
项目最新版下载地址:

2.1.8版本比较稳定,2.5的版本移植到嵌入式不是那么容易,移植步骤如下:
1. LINUX/Makefile 加入以下变量,由于要跨平台编译修改编译工具链
CROSS_COMPILE= arm-linux-
      AS= $(CROSS_COMPILE)as
      LD= $(CROSS_COMPILE)ld
      CC= $(CROSS_COMPILE)gcc
      CPP= $(CC) -E
      AR= $(CROSS_COMPILE)ar
      NM= $(CROSS_COMPILE)nm
      STRIP= $(CROSS_COMPILE)strip
      OBJCOPY= $(CROSS_COMPILE)objcopy
      OBJDUMP= $(CROSS_COMPILE)objdump

2. LINUX/main.c 将下面的代码注释,因为开发板不一定有主机名,所以要将这段代码注释,直接以IP的形式访问
           /*
           if ((hp = gethostbyname(host)) == NULL) {
               error(E_L, E_LOG, T("Can't get host address"));
               fprintf(stderr,"initWebs: host name %s\r",host);
               return -1;
           }
           memcpy((char *) &intaddr, (char *) hp->h_addr_list[0],
               (size_t) hp->h_length);
           */
           intaddr.s_addr = inet_addr("192.168.1.6");     // eth0 网卡IP
阅读(396) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~