当前位置: 主页->网页制作->ASP->利用ASP开发网络聊天室
相关文章
主页计数器使用详解
在自己的电脑上调试CGI程序
 
 
 
 
 
 
 
 
 
 
 
 

利用ASP开发网络聊天室

http://www.yy0736.com 加入日期:2004.11.16 点击数:

查看:[大字体 中字体 小字体]

经常在Internet上冲浪的网友恐怕很少有人没有去过聊天室胡乱神聊。你只要稍微留意一下就会发现这些聊天室大多是用CGI程序或者用JAVA开发的Applet维护的。开发过这类CGI或Applet的程序员都知道,这种开发工作是费时费力的。那么有没有一种更简单、省力的开发方式呢?答案是肯定的。

关于ASP的介绍有许多计算机杂志介绍过,在这里不在赘述。

一、聊天室的规划:

1、谈话内容储存方式的选择:在客户机上显示即时谈话的内容应以什么方式储存在服务器呢?ASP有两种选择,一种是以文本文件方式,一种是以数据库方式。但笔者感觉ASP对文本文件操作的指令远不如ADO(ActiveDataObject)提供的对数据库操作的指令多。所以利用ADO,ASP能对数据库灵活地操作,比如插入、删除、更新、查询等等。笔者选择Access数据库来储存谈话的内容。该数据库内容只保留一天(可根据LAN的实际情况确定时间长短)的谈话内容。

2、聊天室界面的设计:为了客户能够方便地浏览站点的内容,又能尽可能地显示聊天室的内容,笔者在一幅主页里设计了三郑左边一帧显示的是站点的Index。右边一帧又分成上下两郑上帧占70%,用来显示当前聊天室的内容;下帧占30%,用来提供一个文本输入框和供用户反馈的按钮。

3、进入聊天室的步骤:象大多数聊天室一样,首先应该提供给用户一个登录界面,由用户输入自己的名字或别名和自己随意给定的密码。如果输入的用户名与线的用户名相同,则提示用户重新选择用户名或重新输入密码,以保证在线的所有用户名都是唯一的。登陆成功后进入聊天室,内容显示帧显示“欢迎加入”的欢迎信息。用户就可以在文本输入区内输入谈话内容了。

二、设计过程和开发技巧:

1、设计ODBC系统数据源:如前所述,本开发采用ASP对ADO进行操作,因此必须先对数据源进行设置。在NT服务器的控制面板里双击ODBC图标,在系统DSN页添加系统DSN,选择MicrosoftAccessDriver,DataSourceName为‘fybchat’,Database选择Chat目录下的chat.mdb.该数据库包括下面几个字段:

name,content,password,chattime,chatdate,分别以来存储姓名、谈话内容、密码、谈话时间和谈话日期。

2、登录界面设计:登录界面为一html页,包含一些警告信息和一个Form。该Form以来获取帐号和密码,如下所示:

<form method="post" action="receivedata.asp">帐号:
<input type="text" name="usname" >密 码:
<input type="password" name="uspassword" >
</center >< br >< br > < center >
<input type="submit" value=" 进 入" >
<input type="reset" value=" 重 填" >
</center >
<input type="hidden" name="content" value="" >
</form>

通过提交按钮来激发receivedata.asp。该ASP文件主要来保证在聊天室里没有两个用户是同帐号的。用户提交信息后,该文件打开chat.mdb检查是否已经有该帐号,如果有但密码不对就提醒用户重新输入密码,如果没有那么用户就顺利进入了聊天室。进入聊天室界面的功能由下列语句完成:

<FRAMESET ROWS="70%,30%" >
<FRAME SRC="forum.asp" NAME="main" MARGINWIDTH="1"
MARGINHEIGHT="1" Noresize >
<FRAME SRC="frft.asp?kname= <% =name%>" NAME="footnotes"
MARGINWIDTH="1" Noresize >
</FRAMESET >

注意这里有一个技巧,通过参数kname将用户的帐号隐藏在客户的浏览器里面了,这样一来,用户每次提交谈话内容的同时也把他的帐号提交了。

3、文本输入区的设计:文本输入区是由frft.asp产生的。如上所述,用户每次提交谈话内容的同时也把他的帐号提交了,用户提交谈话内容的动作是激活forum.asp。forum.asp的作用是刷新聊天室的内容。Frft.asp内容如下:

<!DOCTYPE HTML PUBLIC " -//IETF//DTD HTML//EN" >
<html >
<head >
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80" >
<meta name="GENERATOR" content="Microsoft FrontPage 2.0" >
<title >
</head >
<body >
<% kname=request.QueryString("kname")% >
<base target="main" >
<form name="fm1" method="POST" action="forum.asp">
<p align="center" ><input type="text" size="90" name="content" > <p align="center" ><input type="button" name="B1" value=" 提 交/ 刷 新" >
<input type="reset" name="B2" value=" 重 写" >< /p >
<input type="hidden" name="kname" value=< % =kname% >>
</form >
<SCRIPT LANGUAGE="VBScript" >
<!--
Sub IeTimer1_Timer()
if fm1.content.value="" then
fm1.content.value=""
fm1.submit
end if
end sub

sub b1_onclick()
fm1.submit
fm1.content.value=""
end sub
-->
</SCRIPT >
<OBJECT ID="IeTimer1" WIDTH=39 HEIGHT=39 CLASSID="CLSID:59CCB4A0-727D- 11CF-AC36-00AA00A47DD2" CODEBASE="http://208.208.208.201/asp/ietimer.ocx" >
<PARAM NAME="_ExtentX" VALUE="1005" >
<PARAM NAME="_ExtentY" VALUE="1005" >
<PARAM NAME="Interval" VALUE="7000" >
</OBJECT >
</body>
</html >

这时又出现了一个问题,用户必须不停提交才能看到最新的聊天室内容,这显然给用户带来了不便。于是考虑用一个timer的ActiveX控件来控制聊天室的内容岂不更好?于是选用了Ietimer,如上<object>……</object>所引用,每隔7秒钟聊天室内容自动更新一次。这样即使用户不想参加聊天也可以坐在机器边看别人聊天了。

三、总结

由上述开发过程我们可以知道,利用ASP程序可以很灵活地传递参数,并且可以很灵活地将程序流程分割成几个单独的ASP程序,非常利于程序的调试,对ActiveX控件的支持和对DAO的强大操作能力使得利用ASP能够开发功能非常强大的程序。

作者:合肥 程双明 出处: 不详

   

上篇:用ASP构建你的网站新闻发布(四)   下篇:《支持中文的无组件文件上传》-- 示例

共有评论: 查看全部评论


[发表评论]
[关闭窗口] [ ][TOP]