基于WWW上的电子公告牌的软件的原理
 
华南师范大学 刘冬杰

[摘要] 本文介绍了一种基于Windows NT的电子公告牌软件的原理及其实现方法。在
这种电子公告牌软件的设计中,数据传输主要是采用CGI和WWW的接口技术实现的。
而电子公告牌软件的编辑主要是采用超文本编辑语言(HTML)实现的。采用这种方式
实现的电子公告牌软件与传统的Telnet方式实现的电子公告牌软件相比,具有快
速、用户使用方便、人机界面友好等优点。

一、引言:
随着Internet应用的日益普及,越来越多的高校建立了自己的电子公告牌系统
(BBS)。BBS具有信件交流、文件传输、信息交流及资料查询等功能。能够快速地
进行信息交流。对于广大BBS使用者而言,BBS具有价廉、无语言障碍、快速、分开
等特点。因而深受广大学生与网络爱好着的欢迎。但是,传统的BBS一般是基于
Telnet的字符界面,在使用时用户通过Telnet登录到BBS服务器,但在远程传输时,
由于使用TCP/IP按报文分组传输,每个包传输时延很大,导致每个包只传输一个有
效字符的Telnet使用效率非常低。在网络速度慢的环境下使用不便,特别是在文章
比较长时不方便浏览和发表。
基于这个原因,我们利用WWW和CGI的接口,开发了一套基于Window NT 的电子公告
牌软件。使用此电子公告牌软件,用户可以通过浏览器来阅读BBS系统中的文章,也
可以在BBS系统中发表文章。


二、CGI与WWW的接口技术:

1.1利用CGI程序产生HTML文档
当浏览器请求的一个UTL的内容为CGI程序时,Website执行该CGI
程序。CGI程序首先向Website回送一个数据头。Website根据这个数据头格式决定如
何处理CGI程序产生的数据。例如下面的程序:
cgi->writeHTMLHeader("<html>\n");
cgi->writeHTMLBody("<head><title>电子公告牌软件</head></title>\n");
cgi->writeHTMLBody("<body>\n");
cgi->writeHTMLBody("<h2>电子公告牌栏目</h2>\n");
cgi->writeHTMLBody("</body>\n");
cgi->writeHTMLFooter("</html>");

Website把下面的内容返回给浏览器。这段程序将向浏览器返回下面的HTML页:
<html>
<head><title>电子公告牌软件</title></head>
<body>
<h2>电子公告牌栏目</h2>
</html>
在浏览器中显示标题为"电子公告牌软件"的信息: 电子公告牌栏目。

1.2 利用Form向CGI传送数据:
CGI程序的触发是从客户用鼠标点入HTML文档的特定标记开始的。客户程序根据这些
标记的类型向服务器程序发出"POST(特定串)"的命令,服务器把这些串分解成程序
名、环境变量及参数,形成对CGI程序的调用。
CGI程序调用的HTML的FORM标记。一个典型的BBS用户发布消息的FORM格式如下:
<TITLE>Form for Publish Article</TITLE>
<H2>发表文章</H2>
<HR>
<FORM METHOD=POST ACTION="/cgi-win/bbs/book/cgibase41.exe">
<pre>主题: <INPUT TYPE="text" NAME=subject MAXLENGTH="32">
姓名: <INPUT TYPE="text" NAME=realname MAXLENGTH="8">
EMail地址: <INPUT TYPE="text" NAME=emailaddr MAXLENGTH="32"><p>
<br>内容:<p>
<TEXTAREA wrap=soft TYPE="text" NAME=content ROWS=5 COLS=50></TEXTAREA>
<P>
</pre>
<INPUT type="submit" value=发送>
<INPUT type="reset" value=取消>
</FORM>
在FORM标记中,type="text"的Input表示请求输入一个字符串,type="submit"的
input表示一个按纽。浏览器在用户输入相应的主题、姓名、Email地址及内容后,
按了type="submit"的发送按纽后,向服务器发出类示
如下所示的命令:
POST/cgi-win/bbs/book/cgibase41.exe
其中cgibase41.exe就是用C/C++编写的CGI程序编译后形成的可执行文件。BBS的用
户在发布消息时,通过服务器启动CGI程序后,CGI通过标准输入(Standrad Input)
获得用户输入数据。在Form中使用Method=POST的设置。可将用户输入数据传递给相
应CGI程序的标准输入设备(Stdin)。编写的CGI程序负责把由标准输入读入的用户数
据串分解为相应的"变量名/赋值"。同时编写的CGI程序还应具有把用户输入的数据
进行分类、使用CGI处理后返回的动态 HTML页面中有用户发表信息的信息目录、同
时还要建立起信息目录和具体信息内容的动态链结等功能。CGI的这些功能都是由编
写CGI程序的C/C++实现的。

三、用户查询BBS内的消息:

用户在不向BBS发送消息。而仅仅查询BBS上的消息时,主要的工作方式是
采用World Wide Web(简称WWW)信息检索服务。采用的WWW是一个基于Internet的全
球链接的分布式的、动态的、多平台的交互式图形超文本信息系统。
1. 分布式的:
通过Internet,WWW用户可以按照某种协议访问存储在世界各地计算机系统的信息。
2. 动态的:
因为信息是分布在各地的站点上的,用户看到的总是最新的资料。
3.多平台:
用户可能使用Windows、Unix、XWindow、Mac、VMS等。当前的主要浏览器都支持各
种操作平台。
4.超文本的:
与传统的Online help等检索不同。在Web中用户可以随意从一个页面(page)跳到另
一页面。而不一定要沿"原路"返回到上一级主菜单后再查找新的内容。非常方便简
洁。如果说传统的检索方式树状呈线性的话。那么Web则是名符其实的网状结构。它
所依赖的技术为超文本链接(hyperlink)。

建立一套供检索的消息机制,它是用HTML语言实现。HTML是WWW的专用表达语言,是
SGML(标准通用标示语言__Standard Generalized Markup Language)的一个简化版
本。HTML规定信息陈列格式,指定需要显示的图片。指定超文本链接对象。主要包
括以下几个组成部分。
1. 一般结构:
<HTML>
<HEAD>
<TITLE>__________________</TITLE>
</HEAD>
<Body>
Text for test
</Body>
</HTML>

2. 定义导航
< A HREF= ""referenced filename" "> </A>
HREF 是Hyper Text Reference 的编写。用来指定导航点被选取后应转入的相应文
件。该文件是指定本机器上,也可在Internet网上任意可访问到的地方。两个标签
之间的内容作为导航点。由浏览器作特殊处理。

3. 加载图片标签
<IMG SRC=""sourcefile" ALIGN=method ALT="text">
SRC指定图片文件。ALIGN指定图片对齐方式。(Top、MIDDLE、BOTTOM),ALT指定在
不能显示图像的浏览器中显示替代文本内容。

4. 接受用户输入的FORMS
<FORMS METHOD=method ACTION="action"></FORM>
可在此指定对用户输入信息处理方式。在FORM中可加入文本框、收音机按钮、复选
框弹出式菜单。METHOD有GET和POST方式。GET将输入信息转至ACTION指定的程序处
理。POST将信息发往ACTION指定的文件存储,留待后用。
<INPUT TYPE="TEXT" Name="Name" size="30">定义了一个文本框。
<INPUT TYPE="Submit"> 接受输入信息按钮。
<INPIT TYPE="reset"> 重置按钮,按后输入作废,各值回归缺省值。

5 结束语
BBS在Internet上的使用日趋广泛。为Internet用户之间的交流提供了一个很好的环
境。开发的公告版软件BBS把BBS与WWW相结合的初步尝试,它建立在BBS的基础上,
溶入了Web带来的便利性。提高了通信效率,节省了BBS用户的时间。同时用Windows
界面改善了可用性和易学性,与基于Telnet的BBS系统相比,具有一定的优越性。

参考文献:
1. M Horton,R Adams, Standard for Interchange of USNET message.
RFC 1036,12/01/1987

2. HTML and CGI unleashed, Sams publishing 1995