【转载】CGI介绍

目前Web技术中生成动态Web页面的方法有CGI和服务器脚本,如JSPASP等,但后者需要Web服务器具有这些脚本的运行支持模块。在嵌入式Web服务器中,考虑到资源限制问题,一般都只提供CGI支持,因此在嵌入式设备中Web方式应用实际上就是基于CGI的程序开发。

        CGICommon GateIntergace)是一段运行在Web服务器上的程序,提供同客户端Html页面的接口。例如,常见的个人主页上大都有一个留言本,留言本的工作方式是先由用户输入一些信息,如名字之类的东西,接着用户按一下“留言”(到目前为止工作都在客户端),浏览器就把这些信息传送到服务器的CGI程序中,于是CGI程序在服务器上按照预定的方法进行处理,在本例中就是把用户提交的信息存入指定的文件中,最后CGI程序给客户端发回一个“留言结束”字样的页面,用户可以在浏览器里看到。

CGIC库的移植    

  在进行CGI编程之前,先了解HTML的一些知识。CGI可以使用多种编程语言来实现,包括CC++Perl等,但在嵌入式设备的开发中,一般都不会采用Perl等解释性语言,因为这种语言还需要有解释执行的支撑模块,会占用存贮空间和内存,最常用的方法当然是用C来编写,但C并不是很适合开发象CGI这种需要大量进行字符串操作的程序,编程比较烦琐,因此,对于一个专业的开发人员来说,首先想到的应该是有没有可复用的库来支持快速高效的开发CGI程序。幸运的是目前就有不少开放源码的支持CGI开发的C库。在此只介绍CGIC,有兴趣的读者可以自己在Internet上搜索其他的C库。 

      CGIC是一个支持CGI开发的开放源码的标准C库,可以免费使用,只需要在开发的站点和程序文档中有个公开声明即可,表明程序使用了CGIC库,用户也可以购买商业授权而无需公开声明。CGIC能够提供以下功能:

1.分析数据,并自动校正一些有缺陷的浏览器发来的数据;

2.透明接收用GETPOST方法发来的From数据;

3.能接受上传文件;

4.能够设置和接收cookies

5.用一致的方式处理From元素里的回车;

6.提供字符串、整数、浮点数、单选或多选功能来接收数据;

7.提供数字字段的边界检查;

8.能够将CGI环境变量转化成C中的非空字符串;

9.提供CGI程序的调试手段,能够回放CGI程序执行时的CGI状态;


下载后,解压到“/opt/EmbedSky/””目录下,会生成目录cgic205

#tar xvfz cgic205.tar.gz

配置编译条件,进入cgic205目录,修改Makefile文件。下面是修改后的文件内容: 

CFLAGS=-g -Wall

CC=arm-linux-gcc//原来是CC = gcc

AR=arm-linux-ar//原来是AR = ar

RANLIB=arm-linux-ranlib//原来是RANLIB = ranlib

LIBS=-L./ -lcgic

all: libcgic.a cgictest.cgi capture

install: libcgic.a

cp libcgic.a /usr/local/lib

cp cgic.h /usr/local/include


@echo libcgic.a is in /usr/local/lib.cgic.h is in /usr/local/include.

libcgic.a: cgic.ocgic.h

rm -f libcgic.a

$(AR) rclibcgic.acgic.o

$(RANLIB) libcgic.a

#mingw32 and cygwin users: replace .cgi with .exe

cgictest.cgi: cgictest.olibcgic.a

$(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS}//gcc改成了:$(CC) $(CFLAGS)

capture: capture.olibcgic.a

$(CC) $(CFLAGS) capture.o -o capture ${LIBS}     //gcc改成了:$(CC) $(CFLAGS)

clean:

rm -f *.o *.acgictest.cgi capture 


修改后保存退出,下面编译并优化。

编译,会在目录下生成capture的可执行文件和测试用的cgictest.cgi文件: 

#make 

优化:

#arm-linux-strip capture   //arm-linux-strip 去掉调试信息

会把 capture  由原来的100K 左右变成现在的29K左右。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值