CGI 学习笔记 HelloCGI

来源:互联网 发布:windows资源管理器在哪 编辑:程序博客网 时间:2024/05/20 02:26

前言

对于设计网页搞web应用的工程师来说CGI技术是一门非常古老的技术了!为什么研究它,古老的技术一般较现在流行的技术简单,例如CGI较ASP或PHP等等。最近一直迷恋嵌入式web技术,想使用RAM和ROM较小的MCU做网页服务器,这些MCU可能是AVR也可能是STM32。网上的资料也不少,但是很多问题都没有讲透。我借博客把资料梳理一下!

嵌入式WEB服务技术较真正的WEB技术有以下区别。(非专业WEB人员,专业词汇说的不对请指正)

本文的目标就是写一个最简单的CGI程序,并在网页中运行。


IIS设置

由于CGI为可执行文件,所有还需要对IIS做适当的设置。具体的设置如图1所示。


图1 IIS设置


编写Hello World程序

学习一门编程类的技术,最简单的方法莫过与实现Hello World。我参考了Getting Started with CGI Programming in C代码,并做了适当的修改。具体代码如下:

#include <stdio.h>int main(void) {  printf("Content-Type: text/plain;charset=us-ascii\n\n");  printf("Hello world\r\n");  return 0;}

在VS2010中编译了该代码,生成了某个exe文件,例如TestCGI.exe文件。接着把TestCGI.exe文件重命名为TestCGI.cgi文件,并复制到web目录即可。第一条printf语句输出HTTP响应头,HTTP响应头和HTTP负载内容之间必须包含一个空行,通过多次实验发现\n\n可以,\n也可以,但是\r\n却不可以


图2 HTTP响应 HEX格式

耐心分析过后,发送在发送\n时,CIG程序自动添加了一个\r。即为图中的0x0d和0x0A。若存在\n\n,那么相当于连续打印两个空行。在HTTP请求和响应格式中,请求头和内容之间只包含一空行即可。

其中Content指内容类型,它包含很多参数,具体可以参考【维基百科相关网页】。

text/plaint 表示纯文本

charset=us-ascii 表示定义字符集


运行结果

在浏览器中输入http://localhost/TestCGI.cgi/或者本机的局域网IP地址,即可在网页中看到Hello World。

请注意,URL的最后为/。


图 运行结果


从这些代码和操作步骤来看,CGI技术虽然非常古老,但是也非常的简单。


后续计划

使用GET方法传递参数,利用CGI程序实现一个乘法运算。

【2014年6月回顾,看来我需要重新启动该计划了】



原创粉丝点击