c语言cgi编程环境配置,基于windows IIS的C语言CGI WEB服务器环境搭建

网页编程对我来讲特别亲切,由于我就是从html、ASP、PHP一步步接触编程的。本身的编程爱好也是从那里一点一点被知足。不过离开大学以后好久没有碰过WEB了,最近看到嵌入式中的涉及到的web服务器,了解到了CGI编程,就想赶忙试一试。对于cgi,不算接触,可是仍是据说过以前,对于纯粹写普通网站的人来讲CGI倒是很古老的东西了,以前在大学的时候学校的ftp搜索引擎,是一位特别牛b的学长写的,用的就是C实现CGI。后来我也想作一个,可是因为水平有限,后来也就不了了之。前几天在南图想找本关于CGI方面的书居然都下架了,在网上搜索关于这方面的文章页不多,且不少是针对perl语言的,因此这里针对C语言的CGI写点东西。html

嵌入式中的WEB服务器,因为嵌入式中主要是用C语言来实现,因此这里只谈C语言的CGI,而在嵌入式中的WEB服务器,你们通常选用BOA等,这里为何选用IIS,主要是由于咱们大部分人都是在windows下开发,因此在iis下调试天然是更方便一些。在网上看到不少人在问iis下配置关于C语言的CGI的方法,而网上的所有都是关于Perl的。我通过了两天的时间在网上一遍一遍的百度和摸索,终于试出来基于windows xp的IIS5.1和windows 7的IIS6.1上的CGI配置方法。ios

综述: 关于脚本和可执行程序web

在iis中对于动态语言会设计到脚本和可执行程序。对于脚本是须要另外的程序对其进行解释的,例如perl脚本编写的CGI就是脚本,须要安装专门的程序区解释;而对于可执行程序,例如C语言编写的.cgi(是c语言编译出来的.exe程序,将扩展名exe改为cgi),其自己就是可执行程序,不须要另外的程序去解释,因此网上关于使用TC仍是VC的编译器cl.exe做为可执行程序去配置c语言编写出来的cgi的说法都是错误的。其实CGI的实现就是将自己脚本或者可执行程序的标准输出,再也不是经过屏幕打印,而是通过浏览器输出给客户端显示,因此你用一个vc或者tc的编译器去执行一个.exe的可执行文件是得不到想要的输出的。正确的做法是不须要和perl语言同样配置解释程序,而是配置为让文件执行。apache

具体操做:编程

因为网上针对IIS 和C语言的CGI的内容较少,因此下面的内容一步步用图片说明。方便向我同样的初次使用者。windows

1.编写CGI程序。浏览器

使用任何一种C语言开发工具,TC,VC,C-free都可,C/C++都可。内容咱们仍是使用经典的hello world。安全

/****************************  hello.cpp

使用C++实现的CGI输出hello world!

by kikilizhm

*****************************/

#include 

voidmain()

{

cout<

cout<

}

/********************************hello.c***************

使用C语言实现的CGI输出加粗的hello world!

by kikilizhm

******************************************************/

#include 

intmain()

{

printf("Content-type:text/html");

printf("\n\n");

printf("Hello World!");

}

上面分别是使用C++和C语言编写的hello world 例程,根据我的习惯,而后编译生成 hello.exe 可执行文件,将扩展名exe改成cgi,变为hello.cgi。服务器

如今咱们的cgi程序就写好了,下面咱们开始配置iis,看看效果。工具

2.针对windows xp  的IIS5.1的配置。其实配置很简单,只要你们看明白其中的根本。

说明:这里默认IIS已经安装好可用(具体安装IIS的方法能够百度一下,这里不细说),针对iis5.1咱们须要的只是配置一下脚本和可执行文件的执行权限便可。

按照上面说的,exe文件不须要解释程序,直接执行便可。假设咱们网站根目录是www,下www\cgi目录为脚本存放目录,咱们把hello.cgi文件放到cgi目录下,这里为演示方便,正常状况下考虑安全等因素,常将存放脚本的目录使用虚拟目录挂接,不直接放在网站根目录下。

5351cbae6999465e951a9ba7.html

5351cbae6999465e951a9ba7.html

而后咱们在IIS中右击cgi目录,选择属性,打开cgi属性对话框,在目录选项卡设置读取、写入、目录访问前的勾去掉。其中读取是防止在访问cgi程序时,浏览器将cgi文件做为下载文件弹出下载对话框,而不是实际执行显示在浏览器上。写入和目录访问时安全须要。这里特别注意去掉读取权限。

而后将下方的 ”执行权限“更改成 ”脚本和可执行文件“ ,这里也是重要的一步,不能够用纯脚本,必定要有可执行文件权限。点击确认再确认,重启IIS便可。

5351cbae6999465e951a9ba7.html

走到这里咱们打开浏览器,输入 http://localhost/cgi/hello.cgi ,便可看到hello world的画面,若是还看不到或者出现其余提示错误,通常为网站的访问权限认证设置有问题,能够尝试修改文件夹访问权限。

5351cbae6999465e951a9ba7.html

**************************** ==针对win 7 的IIS6.1的配置== *****************************

3.win7中的IIS界面和windows xp 中的IIS5.1界面发生了很大的变化,IIS 6.1中已经内置有CGI处理模块,这里咱们直接使用便可。

一样这里咱们假设咱们IIS6.1已经安装好,并且可使用,新建网站名称:cgi-test,根目录为www,下面有子目录cgi用于存放cgi脚本文件。

5351cbae6999465e951a9ba7.html

在左侧的cgi-test网站中,咱们单击cgi-test网站的cgi目录,右侧会显示cgi主页,咱们在右侧 IIS 部分双击模块,进入模块功能,能够看到CgiModule模块,咱们接下来就是要使用的这个模块来实现咱们的cgi功能。

5351cbae6999465e951a9ba7.html                 

5351cbae6999465e951a9ba7.html

看到这里,咱们返回cgi目录的主页,双击CGI主页中的”处理程序映射“来配置 cgi文件的映射,在处理程序映射界面,每一条配置的路径至关于配置的文件扩展名,

状态为已启用或者禁用,处理程序即相应的模块或者脚本解释程序。 在最右侧的操做界面,咱们能够看到咱们能够选择的操做,其中包括 添加托管处理程序、添加脚本映射、添加通配符脚本映射,添加模块映射,和下面的编辑功能权限等。这里咱们使用的是添加模块映射和编辑功能权限。

单击添加模块映射,在出现的编译模块映射对话框中,按照如图所示配置,请求路径输入 *.cgi ,表示cgi格式文件,模块选择CgiModule,可执行文件为空,名称能够随便写,这里为cgi-exe。肯定后,增长了cgi-exe配置,而后右击这条配置选择编译功能权限,确保有执行权限,而后重启iis服务。在浏览器中输入地址,便可查看到hello world的打印。

5351cbae6999465e951a9ba7.html

看看咱们的成果吧,这里只是打印了最简单的字符,服务器已经配置好了,你们能够发挥本身的聪明才智,实现本身的功能吧~

5351cbae6999465e951a9ba7.html

总结:

通过大概两天的时间,终于摸索出了在iis上配置C语言编写的CGI的方法,其实真正配置下来,花的时间并很少也不复杂,可是因为网上不多人使用iis作C的cgi的服务器,并且网上关于这类问题的回答都是答非所问,甚至是错误的说法,因此摸索起来很困难,可是这两天的时间里,在经历了从最初的没有头绪,到最后的思考网上不少人在说的perl语言的cgi和c语言的cgi的区别,去甄别那些错误的信息,而且从那些错误的信息里找出来对我又帮助的地方,好比刚开始的时候使用vc的编译器cl.exe去执行,并无获得想要的结果,因而去尝试vc的bin目录下的其余程序,在有的程序返回了一部分字符的时候,在浏览器的错误信息里显示了错误的http头,比以前的空的头仍是有点帮助,毕竟有了显示,虽然是个错误信息。而后尝试着用cmd.exe去执行,最后的最后确信不适用程序去执行,后面会出现访问cgi的时候出现下载的问题,用文本方式打开下载的文件,虽然也是和服务器端同样的名称,可是下载的文件内容已是个文本,里面就是执行打印出来的信息,只是它被下载下来了,而不是在浏览器中显示,后来在网上看到了一个朋友发的msdn社区上的说明,须要去掉读取权限,这才恍然大悟。而后就看到了亲切的打印信息了。

即便一个一开始不明白或者没有涉及到的问题,不断的去想解决它,即便没有进展,可是对于你对问题的理解仍是有很大帮助的,我想这和那种作梦发现苯环之类的是同样的道理。同时也是一种学习的方式,对于一种技术一会儿接受不了的时候,能够先看一部分,了解一下,或者强迫本身先学,而后放置一段时间,再回头在学,就会发现很轻松了。

该睡觉了,但愿这里能对你们起到帮助做用,另外,在使用的过程当中,推荐你们使用合适的环境,好比在apache中配置cgi更加的简单和安全。针对IIS上的C语言的CGI主要是针对你们在调试过程当中使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值