前言
对于设计网页搞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程序实现一个乘法运算。
分享到:
相关推荐
### CGI编程完全手册知识点梳理 #### 一、CGI基本原理 - **定义**:CGI,即通用网关接口(Common Gateway Interface),是Web服务器提供信息服务的一种标准接口。 - **功能**:允许Web服务器获取客户端提交的信息,并...
这篇笔记将主要介绍SSH中的Struts框架,帮助初学者理解其核心概念和工作流程。 Struts是一个基于MVC(Model-View-Controller)设计模式的Java web应用框架,主要负责视图(View)和控制器(Controller)部分。在Web...
这篇“CGI学习文档”详细介绍了从零开始学习CGI的全过程,包括基础概念、工作原理、实现方法以及实践心得,对于初学者来说是一份宝贵的资料。 一、CGI基础知识 CGI主要扮演的是一个中介角色,当用户通过浏览器发送...
**C语言CGI(Common Gateway Interface)学习指南** CGI,即通用网关接口,是一种标准,用于将Web服务器与各种脚本语言或应用程序连接起来,以动态生成网页内容。在C语言中实现CGI,可以让你创建更复杂的Web应用...
### Java Web 学习笔记:Servlet 的核心概念与应用 #### 一、Servlet 概述 Servlet 是 Java Web 开发中的重要组成部分,主要用于处理客户端发送到服务器端的 HTTP 请求,并生成响应结果返回给客户端。通过学习 ...
CGI编程指南读书笔记CGI编程指南读书笔记CGI编程指南读书笔记
**Qt 访问 CGI 的方法与 CGI 实例** 在 IT 领域,尤其是 Web 开发中,CGI(Common Gateway Interface,通用网关接口)是一种标准,它允许 Web 服务器执行外部应用程序并返回结果给客户端。Qt 是一个强大的 C++ 库,...
### CGI编程基础概念详解 #### 一、CGI(Common Gateway Interface)概述 CGI,全称为Common Gateway Interface,...通过深入学习CGI编程,不仅可以提高自身的技术水平,还能在实际项目中灵活运用,解决复杂的问题。
学习如何根据不同的请求方法获取数据、处理数据以及如何组织CGI程序的结构(包括初始化、处理请求和终止程序),是掌握CGI编程的基础。 ### HTML表单和CGI程序 HTML表单是用户与Web页面交互的重要方式之一。表单中...
CGI(Common Gateway Interface,通用网关接口)是一种在Web服务器上执行外部应用程序的标准协议,使得...开发者可以通过学习和实践这个例子,掌握如何将简单的嵌入式硬件功能与Web服务器相结合,实现远程控制和监控。
CGI(Common Gateway Interface,通用网关接口)是一种标准,允许Web服务器与外部应用程序交互,以处理动态内容。CGI库则是用特定编程语言编写的,简化了开发CGI程序的过程。在这个案例中,我们讨论的是`cgi-util`,...
在深入学习CGI编程的过程中,你将接触到许多实际应用案例,例如表单处理、登录验证、数据库交互等。此外,还可以结合其他技术,如模板引擎(例如Perl的HTML::Template或Python的Mako),来提高代码的可维护性和...
CGI(Common Gateway Interface,通用网关接口)是一种标准,允许Web服务器与外部应用程序交互,以处理动态内容。在这个特定的资源包中,你将找到一个用C++编写的CGI用户登录验证程序,适用于Windows和基于ARM架构的...
### Struts2学习笔记知识点梳理 #### 一、前言及背景 - **Struts2简介**:Struts2是一个基于MVC模式的开源Web应用框架,它继承了Struts1的一些特性,并在此基础上进行了很多改进,使得开发更加便捷高效。 - **学习...
CGI(Common Gateway Interface,通用网关接口)是一种标准,允许Web服务器与外部应用程序交互,以处理动态内容,如表单提交、文件下载等。在这个场景中,我们将探讨如何使用CGI来实现在网页上提供文件下载的功能。 ...
CGI(Common Gateway Interface)是一种标准的Web服务器接口,允许Web服务器与外部程序进行交互,以动态...通过深入学习和熟练掌握CGI-plus,IT从业者可以提升他们的系统管理技能,提高工作效率,并确保数据的安全性。
在压缩包内的“cgi”文件可能包含了CGI编程的源代码示例、教程文档或者配置文件,帮助学习者理解和实践CGI编程。这些资源对于理解CGI的工作原理、编写自己的CGI程序以及调试现有CGI应用都非常有价值。 总的来说,...
Web开发技术原理学习笔记主要涵盖了HTTP应用、HTTP客户端和服务器端开发、HTML基础及高级语法、脚本语言和客户端脚本应用,以及服务器端CGI程序。以下是对这些知识点的详细解释: 1. **HTTP应用**: - HTTP客户...
【搭建lighttpd+cgi的代码包】 在Web服务器领域,lighttpd是一个轻量级且高效的HTTP服务器,因其低内存占用和高速度而受到欢迎。CGI(Common Gateway Interface)则是一种标准,允许Web服务器执行外部程序并返回...
CGI(Common Gateway Interface,通用网关接口)是一种在Web服务器上运行外部程序的标准协议,使得动态网页生成成为可能。C语言编写的CGI库为...通过学习和掌握这个库,你可以更高效地开发出动态、安全的Web服务。