webServer服务端编程CGIC学习笔记(一)

一、什么是CGI

CGI:Common Gateway Interface。CGI代表Common Gateway Interface(通用网关界面),它使在网络服务器下运行外部应用程序。在配置boa服务器时,有一个boa.conf文件,这个文件的最后一个参数是指定cgi程序(也称cgi脚本)的存放路径.

它是运行在Web服务器上的一个程序,并由来自于浏览者的输人触发。CGI是在HTTP服务器下运行外部程序(或网关)的一个接口,它能让网络用户访问远程系统上的使用类型程序,就好像他们在实际使用那些远程计算机一样。CGI能够让浏览者与服务器进行交互,如果你曾经遇到过在网络上填表或者进行搜索,就很有可能就是用的CGI。

CGI应用程序可以由大多数的编程语言编写,如Perl、C\C++、Java 和Visual Basic等。

CGI应用程序的工作原理是这样的:
1.浏览器通过HTML表单或超链接请求指上一个CGI应用程序的URL。
2.服务器收发到请求。
3.服务器执行指定所CGI应用程序。
4.CGI应用程序执行所需要的操作,通常是基于浏览者输人的内容。
5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。
6.网络服务器把结果返回到浏览器中。

有关CGI应用程序要注意的是:
CGI应用程序运行在浏览器可以请求的服务器系统上,执行时需要使用服务器CPU时间和内存。如果有成千上万的这种程序会同时运行,那会对服务器系统提出极高的要求。
不完善的CGI应用程序可能成为别人非法进人服务器系统的通道,有可能导致重要的资料被删除或外泄。

二、什么是CGIC

cgic是一个c语言库,用于基于CGI标准规范的www应用程序的创建。
简单来说就是用c语言写了一个CGI程序的库,提供一些API函数,供开发者使用,减少开发的周期。

CGIC库的获取
https://www.boutell.com/cgic/

进入官网,下载最新版本的cgic库。

使用cgic时,只需要包含cgic.c 和cgic.h即可,不需要编译成动态库或者静态库

当然,也可编译成库文件,但是如果在ARM上运行,则需要把库移植到ARM板子上,为了方便可以在编译的时候直接包含cgic.c cgic.即可

三、编写第一个简单的CGIC的demo程序

  //cgictest.c
    #include 
    #include "cgic.h"   //包含cgic.h文件
    #include 
    #include 
    int cgiMain()   //cgic不需要main函数,需要使用cgic里面的cgiMain函数
    {
    	cgiHeaderContentType("text/html");			//固定写法,需要第一行写。代表输出的是html文件
	    fprintf(cgiOut, "\n");				
	    fprintf(cgiOut, "My First CGI\n");
	    fprintf(cgiOut, "

Hello CGIC

\n"); fprintf(cgiOut, "\n"); return 0; }

四、编写程序

在同一目录下包含 cgictest.c 、cgic.c  、cgic.h
执行命令
	gcc cgictest.c cgic.c -o cgitest.cgi

五、试运行

在生成的cgitest.cgi文件拷贝到boa服务器配置好的cgi程序的存放路径,在(boa.conf中最后一个参数配置)

在boa服务器搭建好的情况下,在虚拟机浏览器中输入 localhost/cgi-bin/cgitest.cgi
在浏览器中就会显示出Hello CGIC 的字样

你可能感兴趣的:(嵌入式,Linux)