CGI 学习笔记 HelloCGI

前言

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

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

2014年1月回顾,发现自己在胡说八道

【1】.使用CGI来实现动态网页,而不是ASP或PHP。

【2】.表单多使用GET方法,而WEB多使用POST方法,嵌入式WEB通过URL传递数据。

本文的目标就是写一个最简单的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程序实现一个乘法运算。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值