

免费预览已结束,剩余32页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
桂林电子科技大学毕业设计(论文)报告专用纸 编号: 毕 业 论 文题 目: 聊天室的设计与实现 院 (系): 专 业: 计算机及应用 学生姓名: 学 号: 指导教师: 职 称: 教 授 题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发2012年 4月 15日摘 要 随着internet的普及,很多人已经不满足于仅仅上网冲浪,而希望能参与其中的开发与研究。怎样做好网页便是人们所渴望的事情。想做好一个网页就要选好工具,我的课题是聊天室的设计与制作。因此,我这里选择的开发软件是macromedia dreamweaver 8。macromedia dreamweaver 8目前作为最主流的asp开发工具,它可以将前台界面设计和后天程序设计充分结合,包括asp等。而微软的asp和目前推广的,是广大网页后台设计师的首选,其应在iis服务器环境中运行并通过调用access数据库来实现。 在线聊天室是一种十分普及的动态交互系统,是一种比较直观的且容易接受的交流方式,特别对于刚刚接触的新网民,在线聊天室相对于其他网络交流方式来说有很多不可比拟的优势,比如操作简单,界面简单,信息显示十分直观,十分适合新手;信息的及时传递无延迟,用户可以十分自如地和他人交流而无须等待。这些优点也是聊天室出现这么长时间以来的仍然被广泛使用的原因。至今在线聊天室仍是被很多网站作为吸引网民的利器. 本人制作的是在线聊天室的功能实现,实现用户的登陆和注册,用户在线聊天功能,私聊功能及管理员管理用户功能。聊天的界面有框架构成的。 建设此聊天室,主要目的是为了能够和相同爱好的朋友提供一个实时交流的平台,而不会因为距离而疏远了。关键词:聊天室;asp iis服务器;access数据库;macromedia dreamweaver 8abstractwith the popularity of the internet, many people no longer satisfied with merely surfing the internet, and hope to participate in the development and research. how to do a web page is the desire things. want to do a web page we should choose the right tools, my topic is the design and production of the chat room. therefore, i choose to develop software macromedia dreamweaver 8. macromedia dreamweaver 8 asp development tools as the most mainstream, it can be the front interface design and acquired programming, fully integrated, including asp. microsofts asp and , is currently promoting the first choice for the majority of web designers in the background, should be run in the iis server environment and by calling the access database. online chat rooms is a very popular dynamic interactive system is a more intuitive and easy to accept the exchange, especially for just contact new internet users, online chat rooms for other network communication have many incomparable advantages such as simple operation interface is simple and the information display is very intuitive, very suitable for the novice; delay in the timely transmission of information, users can freely communicate with others without having to wait. these advantages is the chat room is still widely used because such a long time since. has online chat rooms are still many sites to attract users of the weapon. i produced the online chat room functions, the users landing and landing failure to return. the users login, chat, private chat function, and administrators to manage user functionality. the chat interface framework constitutes. the construction of this chat room, the main purpose is to provide a real-time platform for the exchange and the same loving friends, and not because of the distance and alienated.key words:chat room;asp iis server; the access database;macromedia dreamweaver 8 引言11 asp的技术21.1 asp(acitve server pages)技术21.2 asp的产生及特性21.3 asp的基本对象31.4 vbscript的简介42 基于asp的程序设计方法521 asp的内置对象522 asp的语法规则概述63.2 聊天室运行环境733 系统功能模块说明834 体系结构图83.5 系统功能模块图836 系统总流程图94 软件实现1041 信息的组织、存储、共享的实现1042 登陆功能的实现1143 人员列表的实现1444 公共聊天和私聊功能的实现思路1745 聊天刷新问题的解决1946 发言显示更新处理2047 聊天室中实现踢人功能2148 聊天室中实现封锁ip 地址功能2149 屏蔽别人的讲话功能的实现21410表情功能的实现225 系统调试与维护2351 系统调试2352 系统维护25结 论27谢 辞28参考文献29附 录30桂林电子科技大学毕业设计(论文)报告专用纸 第 30 页 共 34 页引言计算机的发展无论是从硬件还是软件,这些年来都堪称是突飞猛进。而今internet已成为目前规模最大的国际性计算机网络。同时,随着internet的发展,各个网站的建立,使其在各个领域都得到了广泛的应用,从学术研究到股票交易、从学校教育到娱乐游戏、从连机信息检索到在线居家购物,从办公室共享到市场营销、服务、通讯等各个领域。 在传统的生命周期的方法开发软件,存在不少的问题。一是软件生产率远远赶不上用户的需要。因为传统的方法总是强调需求分析的重要性,强调在每个阶段结束之前必须进行评审,从而提高成功率,减少重大返工的次数,这样造成软件的开发时间长。而用户的需求变化日益加快。二是软件的重用、程度很低。三是软件的维护很难,维护费很高。四是用户的需求变化很快,造成软件还没有开发出来就不满足用户的需求。这次毕业设计就采用asp来开发聊天室。首先是操作系统的选定。操作系统是计算机的操作平台,是计算机的灵魂所在,因此必须先要决定软件开发所应用的操作系统。操作系统种类繁多,如微软公司的dos、windows、vista操作系统,还有在网络服务器上广泛应用的unix操作系统,还有红级一时的中国人的操作系统linux等等。根据应用的广泛性、普遍性和实用性,系统决定选用microsoft xp操作系统作为软件的操作系统平台。 其次,是编程软件的选定了。具体的软件编程就依赖于编程软件了编程软件的优良从根本上决定了一个软件的质量。编程软件的种类是最多、也是最不好选择的,如asp、asp.net、jsp、php等,本系统选用的是asp。 最后,就是数据库软件的选定。数据库是一个软件的存储中心,数据库软件就是这个存储中心的缔造者,数据库的可用性直接影响着一个软件的功能。随着数据库技术的飞速发展,数据库软件也是多如牛毛,如关系型数据库database、foxpro、access、sybase、informix mysql、sql server等等。因此本聊天室选择access数据库。1 asp的技术1.1 asp(acitve server pages)技术microsoft active server pages(asp)是服务器端脚本编写环境,使用它可以创建和运行动态、交互的 web 服务器应用程序。使用 asp 可以组合 html 页、脚本命令和 activex 组件以创建交互的 web 页和基于 web 的功能强大的应用程序。asp 应用程序容易开发和修改。相对于传统的cgi技术而言,它大大简化了程序的过程,缩短了设计周期提高了工作效率。由于不需要编译过程,asp 程序员可以有更多的时间去改进程序的结构和程序的界面等其他方面。同时asp编程所使用的语法相对比较通俗易懂的vbscript和javascript,比起传统cgi使用的perl,c等语言来说应该简单许多。1.2 asp的产生及特性 通用网关界面cgi(common gateway interface)和网络服务器应用程序界面isapi(internet server application programming interface)与其他相关技术的出现,使我们能够方便地与web server进行沟通,从而比如一些计数器、留言版等cgi程式相继出现并蔚然成风。但cgi程序都有一个很大的缺点,就是cgi(可用vb、java、perl、c或dephi等编写)与html只能分开编写、运行,要将两者融合在一起并不容易,从而导致维护与编写都相当困难。因此,一些厂商后来都推出了自己的script语言,来增强网页开发的功能。其中netscape推出了javascript(for client端和for server端两种);微软则推出了vbscript和asp(asp的语法与vb的语法类似)两种,也用于服务器端和客户端程序的编写。对于专业开发人员而言,客户端程序的最重要的一点是通用性,而服务器端的则强调功能和效率。对于client端程序的开发,javascript无疑是最佳的,因为当今两大主流浏览器ie和netscape都宣称支持该标准;而vbscript则只有ie才能支持。但令我们苦恼的是对某些javascript的标记,ie或ie的某些版本并不一定会支持,这必导致我们不得不把一部分程序移到服务器端去执行,因为服务器端的程序会先解释生成html(或含activex)文本,再送到客户端,故不存在兼容问题。 而asp的创新并不是完全超越传统的cgi技术,事实上asp自身也存在一定的弊端, asp自身放弃了编译这个过程,将整个工作交给asp解释程序来处理,在每次客户提交访问申请时,解释器都需要将源程序解释一遍再运行,这样就明显地降低了服务器的运行效率.此外,所有程序通过解释器来解释执行,而这个过程对程序员是透明的。也就是说,很大程度上,程序的效率和安全性不是取决于程序本身,而是取决于这个asp的解释器,虽然微软所提供的asp解释器自身存在的漏洞有很大关系,这也是为什么asp问世这么多年了,仍然还有很多站点在使用传统cgi技术的原因所在。asp是微软公司推出的一种动态网页技术,它支持vbscript和javascript两种脚本语言。它是一种开放式的非编译应用环境,使得用户能够组合html,script和可重用的activex服务器组建来建立动态的、强大的、基于web的商业站点。相对静态网页编辑来说,优越性很强,静态网页编辑的缺点就是维护困难(文件数目多)、查询难、修改难。而目前很多的站点都采用asp与后台数据库连接,动态生成超文本。如果要改变网页式样,只需修改几个文件;更新内容,只需对数据库进行操作即可,而且易于保持一致性;而对于全文检索等查询应用,优越性更为突出(如gif、java applet等)。asp拥有以下特点:1.使用vbscript,javascript等简单易懂的脚本语言,在结合html代码,即可快速生成网站的应用程序。2. 使用普通的文本编辑器,无须compile编译,容易编写,可在服务端直接执行。3. 与浏览器无关,用户端只要使用可执行html码的浏览器,即可浏览active server pages所设计的网页内容。4. 面对对象编程, 可使用服务器端的脚本来产生客户端的脚本。5. active server pages的源程序不会被传到客户浏览器,因而可以避免所写的源程序被其他人剽窃,也提高了程序的安全性。6. active server pages 能与任何activex scripting语言相容,除了使用vbscript 或javascript语言来设计外,还可使用譬如rexx,和perl等语言。7.具有无限可扩充性。可以使用visual basic,java,c+和cobol等编程语言来编写1.3 asp的基本对象有五个主要的内建对象:request、response、server、session、application,下面将分asp(active server page)是一种类似于vb的面向对象的程序语言。等一些基本概念,而是直接介绍其语言特性,以便开发人员能够熟练地对asp程序进行修改和编制(因为很多人都只是直接利用开发工具如interdev来生成asp程序)。asp程序的存档名称肯定是.asp程序里面,服务器端的script要放在字符串中间,例如。如果你想在一个asp文件中调用另一个asp文件,则可在asp中加上下面的声明: ,这有些像c语言中的#include。其中,virtual表示虚拟文件路径,file表示真实文件路径.asp依然遵从流行的、利用客户端的form进行数据交换的方法。 asp内建的request对象拥有五个获取客户端资料的方法(querystring/form/cookies/servervariables/clientcertificate当要从服务器传送资料到客户端时,可通过下面的方法: 1)response.write直接输出信息,如response.write 。 2)response.redirect引导客户端到另一个url位置,如response.redirect ,但这里有一个问题需要注意,就是该语句一定要放在标记前执行,也就是说在服务器未向客户端送出html文本报头前就要被执行,否则会出现传输错误信息。3)response.contenttype控制输出的文件类型,服务器送给客户端的数据包类型可以是text/html文本,也可以是gif/jpeg图形文件,所以每次传输前,我们都必须告知客户端将要传输的文件类型。 4)response.cookies 用于设置cookies的值,语法为:response.cookies(变量名称)(key)|属性=写入的信息。(key的用法前面已作说明,这里不在叙述)cookies系统默认有五个属性,包括expires(时间)、domain(域名)、path(路径)、secure(安全性)、haskeys(判断cookies下是否还有其它cookies文本)。如:。 5)response.buffer用于确定是否把信息传输到缓冲区。因为有时候我们希望把部分中间信息送到缓冲区,然后继续工作。当所有处理工作都完成后,才把信息输出到客户端。但当在处理过程中flush或end方法被调用,则缓冲区内容将输出。 server :server对象会为你提供一些固定的server端的方法和属性,包括scripttimeout、mappath和urlencode等。其中scripttimeout是server的属性,可规定一个asp程序执行的最长时间,如:server.scripttimeout=200(计数单位为秒,缺省时为90秒)。 mappath是server的一个方法,用于把web server的虚拟路径转换为实际路径。如server.mappath(/)=c:inetpubwwwroot,对于路径参数?sp都会视为一样。在这里有一点要注意的是,系统只是对应web server的真实根目录输出结果,而不会去检查文件系统中是否真的存在这样一个目录。 urlencode是server的另外一个方法,该方法会根据url编码原则,把源字符串编码为目标字符串,其中空白的字符用? session:session是asp中一个非常重要的对象,在用一些传统的语言编程时,都会涉及到变量是定义为全局变量还是局部变量这个问题。但在internet上的开发却很少提及这个问题(java除外),因为每一个html页面都是非相关的,传输完毕后,全部链接都会断开。在asp中则不一样,我们可以定义一些全局变量,这里的全局是指在当前浏览器没有被关闭前都可以被使用。这些变量可以在global.asa中进行定义。如果你的web应用程序是用interdev自动创建的,则会在根目录找到该文件;如果不是则可自行创建。application :global.asp是用于定义session、application和object对象的一个文件,客户端是不能看到该文件的。但该文件一定要放在程序的根目录上,而且文本中不能有html标记并且文件名不能改动。 1.4 vbscript的简介vbscript 是由 netscape 公司开发的一种脚本语言(scripting language), 或者称为描述语言。在 html 基础上,使用 vbscript 可以开发交互式 web 网页。vbscript 的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。vbscript 短小精悍, 又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。 它是专门为制作 web 网页而量身定做的一种简单的编程语运行用 vbscript 编写的程序需要能支持 vbscript 语言的浏览器。微软公司 internet explorer 和 netscape 公司 navigator 3.0以上版本的浏览器都能支持vbscript。vbscript的重要功能:在 vbscript 这样的用户端脚本语言语言出现之前,传统的数据提交和验证工作均由用户端浏览器通过网络传输到服务器上进行。如果数据量很大,这对于网络和服务器的资源来说实在是一种无形的浪费。而使用 vbscript 就可以在客户端进行数据验证。vbscript 可以方便地操纵各种浏览器的对象,可以使用 vbscript 来控制浏览器的外观,状态甚至运行方式,可以根据用户的需要“定制”浏览器,从而使网页更加友好。2 基于asp的程序设计方法21 asp的内置对象 在面向对象的编程中,对象是指包含了数据(属性)、操作(方法)、集合等的完整实体。其中对象方法决定了我们可以用这个对象作什么事情。对象的属性可以读取出来了解对象状态或者设置对象状态。 asp共有6个可直接使用的内建对象,现在做个简单介绍。 (1)request对象:可以使用request对象访问任何基于http请求传递所有信息,包括从html表格用post方法或get方法传递的参数、cookie和用户认证。 (2) response对象:response对象是用来控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到到另一个url或设置cookie的值。 (3) server对象:server对象在asp中是一个很重要的对象,许多高级功能都是靠它来完成的。server对象的最重要的方法是createobject方法,该方法用于创建己注册到服务器上的除asp内置对象外的其它activex组件。这是一个非常重要的特性,因为正是使用activex组件,你可以实现一些光靠脚本无法实现的功能,如数据库访问,文件访问等。 (4) application对象:可以使用application对象,在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久地保存数据。 (5) session对象:可以使用session对象存储特定的用户会话所需的信息。 (6) objectcontext对象:提供在页面内进行事务处理的能力。在web数据库应用系统中request对象常用于添加数据与传递参数功能中,而response对象用于输出数据库检索结果,server对象用于创建数据库组件,session与application对象用于存贮页之间或应用程序间传递的数据和参数。22 asp的语法规则概述 如前所述,active server pages (asp)文件是以.asp为扩展名的文本文件,这个文本文件可以包括下列部分的任意组合,但对具体位置由一定的要求:1.文本;2. html标记;3. asp脚本命令。 如果要在html文件中添加脚本,只需将该文件的扩展名.htm或.html替换为.asp就可以了。要使.asp文件可以运行来响应访问者。必须将这个文件保存在web站点上的具有脚本执行权限目录中。当访问者使用浏览器察看该文件时,就可以看到经asp处理并返回的html页。值得注意的事,因为.asp文件需要额外的处理,如果该文件不含asp语句,就不用将所有的html页都转换为asp页。应该只将包含脚本命令的文件命名为.asp文件,以提高效率。 脚本命令通过定界符与文本区别开来。asp使用定界符括入脚本命令。只要命令对正在使用的脚本语言有效,就可以在定界符中括入任何命令。定界符括入的命令被称为主脚本命令。这些命令被主脚本语言处理。在asp定界符中可以包含任何在主脚本语言中合法的语句、表达式、过程或操作符3 聊天室的功能分析与设计3.1 聊天室的功能说明该聊天室的实现共由7个文件完成,通过index.html登录界面进入聊天室后,用户进入聊天室,用户可以从聊天用户窗口看到该聊天室中所有用户id;在聊天窗口中看到随时更新的聊天信息;用户可以给所有人或某一个聊天用户发送公共的聊天信息,可以给自己的聊天信息定义不用的颜色,还可以加上丰富的表情语言,这个聊天内容大家都会看到;用户还可以给某个用户发送私人的聊天信息,这种信息属于私聊信息,只有发送者和接收者自己可以看到;此外聊天窗口中还有一些系统公告,比如某某登陆聊天室、某某离开的消息。若用户想退出,按退出键便可离开聊天室 。3.2 聊天室运行环境asp要浏览必须经过服务器解析才能够浏览得到。如果是将asp文件上传到支持asp的服务器,那就能够直接浏览。但是如果是在本机上,那就必须将电脑设置成为服务器。单机并不需要设置成为局域网,只需要设置成为单机服务器就可以。asp运行所需的环境如下: microsoft internet information server version 3.0/4.0 on windows nt server microsoft peer web services version 3.0 on windows nt workstation microsoft personal web server on windows 95/98/2000/xp也就是说平常所使用的window95/98/2000/xp都可以运行asp,只需要将其设置为单机服务器就行了。归结一点:window95/98,需要安装pws;window2000/xp,需要安装iis。才能发挥其asp的作用。一般较常使用的是window2000+iis5和window98+pws,而window95+pws和windowxp+iis则较少人使用。因为window95已经很少人使用这个操作系统了,最少都使用98的啦!而xp+iis,则是xp对iis不是完全兼容支持,有些功能配合得不够完美,而较少人采用。推荐使用window2000+iis5这对组合,因为window2000是相对比较稳定的系统,对于服务器网络方面微软投入得较多,比较适合作为服务使用。下面就详细讲解window2000+iis5的安装设置方法: 1、找一张window2000的系统安装盘; 2、在“开始”“控制面板”“添加/删除程序”“添加/删除windows组件” ,随后在“组件”列表对话框中选中“internet 信息服务”、“管理和监视工具”和“脚本调试器”,点击windows组件对话框上“确定”按钮,windows 2000 将会自动开始安装和配置iis。 3、安装好了iis并不等于马上可以使用,还要给iis配置上ip地址才可以使用:第一、 在“开始”“程序”“管理工具”“internet服务管理器”; 第二、 打开之后,可以看到在计算机标识符下有默认的ftp站点、默认的web站点和一个默认的smtp虚拟服务器。 第三、选中“默认的web站点”,按鼠标右键,从弹出选单中选择“属性”,进入属性对话框并选择“web站点”选项,然后点击“ip地址”下拉框,选择“”(你本机上的ip地址)作为web站点的ip地址。这样,就可以通过在ie浏览器中键入“http:/localhost/”或“http:/ /”来访问本机上的web站点了。4、到现在为止,已经可以访问ip地址为的web站点了。启动ie并在地址栏中键入。或是直接在“internet服务管理器”的右边,选中想要浏览的网页,按右键选择“浏览”也是可以打开所要打开的网页。 如果并不想将文件放在localhost文件夹里面,或是习惯在其他的硬盘里面新建一个文件来存放网页,那么可以选中“默认的web站点”,按鼠标右键,从弹出选单中选择“新建”,选择“站点”,再一步一步做下去就可以了。但是此虚拟站点还未启动,还是不可以使用,将原来启动的那个站点,按鼠标右键,从弹出选单中选择“停止”,然后选中刚才新建的站点,同样的选择“启动”就可以通过在ie浏览器中键入“http:/ /”来访问本机上刚才新建的新的站点了。 同一个ip是不可以同时被两个站点使用的,所以如果要使用时必须注意,将不想使用的站点停止了,才可以启用新的站点33 系统功能模块说明(1)登陆模块登陆页(index.html):主要用于记录登陆者聊天者的昵称、登陆时间、ip地址等信息。(2)谈话模块(chatmenu.asp):主要用于发送谈话内容,选择私聊对象,清空谈话内容,选择动作,显示帮助文件,退出等多项功能。(3)显示模块:分为对所有人和私聊两部分。(4)人员列表(namelist.asp):显示所有聊天人员名称,可以提供自动和手工刷新人员列表的功能。(5)功能模块:主要用于管理聊天室,包括屏蔽,分屏,刷新等功能按钮。(6)站名和聊天室名显示模块:显示站名和聊天室名。34 体系结构图当用户向服务器聊天室所在页面提出浏览请求时,将得到一个(一组)asp返回页,也即是已经进入聊天室。 web服务器用户工作站用户工作站 服务器向用户端响应返回asp页面 浏览器向服务器提出请求 浏览器向服务器提出请求 服务器向用户端响应返回asp页面图 3.1 体系结构图3.5 系统功能模块图网络聊天室系统聊天设置功能聊天管理功能私聊功能表情功能改名功能分屏功能封锁ip地址功能踢人功能屏蔽讲话功能图 3.3 功能模块36 系统总流程图开 始 进入聊天室登录界面index.html 离开聊天室 进入聊天室主界面chatroom1.asp 输入并发送信息 显示私聊 显示对所有人信息scr.asptext. aspchat. asp图 3.2 系统总流程图4 软件实现通过登录界面进入聊天室后,用户进入聊天室,用户可以从聊天用户窗口看到该聊天室中所有用户id;在聊天窗口中看到随时更新的聊天信息;用户可以给所有人或某一个聊天用户发送公共的聊天信息,可以给自己的聊天信息定义不用的颜色,还可以加上丰富的表情语言,这个聊天内容大家都会看到;用户还可以给某个用户发送私人的聊天信息,这种信息属于私聊信息,只有发送者和接收者自己可以看到;此外聊天窗口中还有一些系统公告,比如某某登陆聊天室、某某离开的消息。若用户想退出,按退出键便可离开聊天室 。根据以上的功能, 无论使用何种手段实现聊天室程序,都应能解决如下一些技术要点:1. 如何组织、存储所有聊天者所说的话(即聊天信息),以期达到最基本的能在多个用户(即多个聊天者)之间实现信息共享。聊天室程序的速度瓶颈(如果有的话)就在这里。当然还有一类数据如聊天者的个人资料,以及其在本聊天室中目前的权限级别等等,此类数据因无须共享,对聊天的速度并没有本质上的影响,所以系统降低了对它们进行组织存储的要求,我们可以使用磁盘文件,也可以借助于web后台数据库等进行存储。 2. 如何实现登陆功能。3. 如何实现人员列表。4. 如何实现公共聊天和私聊。5. 如何解决聊天刷新。6. 如何实现聊天室踢人功能。7. 如何实现封锁ip功能。8. 如何实现表情。9. 如何实现屏蔽功能。10. 如何实现解除屏蔽。41 信息的组织、存储、共享的实现 在实际应用中,聊天室程序并不需要存储所有聊天者所说的所有话,而仅需存储正在室内的聊天者们最近所说的若干句话,这些信息也无须作长期永久性的存储。因此,我们可舍弃磁盘文件及后台数据库的方法,直接使用内存进行操作,这样可大大提高信息的读写速度,从而能较好地解决聊天室的速度瓶颈问题。 同时,这些信息经过组织存储后,在聊天者的浏览器端显示时要求具有顺序性,为了便于显示、加快显示速度,对这些信息要求具有操作的连续性。不管在何种语言中,数组是能同时满足这两项要求的数据结构之一。 在聊天室程序中,完成了信息的组织存储,仍有另一关键技术待解决:如何能在多个程序或一个程序的多个运行实例之间进行信息共享。这一技术在不同的编程语言中有不同的解决思路,如共享内存,数据文件;或者使用服务器/客户模式程序实现在多个程序间完成数据交换。 由于application对象的设置值为应用的所有用户共享,我们可以用它来保存聊天室的发言。为了便于处理,引入一个数组来存放发言,在global. asa文件的application- on-start事件代码中定义数组并将其赋给一个application对象,数组的大小定为12,是为了限定显示行数为12行,保证用户阅读信息的方便,不用拉动垂直滚动条。利用模12运算按循环队列机制来填写数组,并将最新录入的发言显示在最底部。global. asa代码:sub application.onstart dim m chats (12) application(”gchats)=m chats application(gcounte r)=0end sub为了防止两个用户为写入发言同时对application对象变量修改,从而导致一个用户的所作的修改被另一个用户的操作所覆盖,必须解决多用户并发写入问题,application对象的locked属性可以用来只允许当前用户编辑application对象的值,操作结束必须用unlocked来释放其对application对象的独占。如果在加锁时有其他用户请求编辑application对象,则这些用户要排队等待,直到application对象被解锁。为了处理方便,在该程序中创建了application对象变量的本地引用,这样做是为了简化代码,使用简短的本地变量而不是繁琐的名字。42 登陆功能的实现要实现登陆的功能就是在用户输入昵称的时候判断是否为空或者是否昵称重复,如果是则不能进入聊天室,要求用户重新输入,如果否则用户进入聊天室。这里只需要一个判断语句就可以完成,把表单中的nickname文本框中的内容存入nickname变量中,并判断nickname变量是否为空,如果是则返回登陆界面;如果不是则把“来自某ip地址的某某同学在某时间来到我们身边啦!”这句话存入application(“show”)变量中(这样同时实现了系统公告)。并通过 session(sname)=nickname application(sname)=nickname application(allname)=nickname&application(allname)来获得所有人的名字。 图4.1 登陆界面43 人员列表的实现人员列表的实现就是把在namelist.asp中存入application(allname)中的名字使用显示出来,在这里利用实现手工刷新。图4.2 用户列表44 公共聊天和私聊功能的实现思路 对于没有私聊功能的聊天室来说,其实每个用户的屏幕上显示的内容是一样的。所以只要在global . asa中建立一个公共变量来储存聊天内容,然后将该变量的内容显示在客户端的屏幕上就可以了。在asp中,只要建立一个application对象的变量,然后对其读写就可以实现了。写入代码如下: 以上代码只需放入发送消息的asp文件中就可以了。其中,new msg为作者定义的一个储存新聊天内容的变量,它用来储存用户新发出的消息。在网络上,发送消息可能是一个并发事件。如果多个用户同时更改这个application变量,就会发生错误。所以,上述代码中使用了application . lock和application . unlock来避免此问题的发生。而读出此变量内容并将其显示在网页上则较为简单,只要将下述代码放入用于显示的asp文件中即可:私聊功能实现思路:知道了基本聊天室的实现方法,我们再来看看如何实现具有私聊功能的聊天室。对于一个拥有私聊功能的聊天室,与没有此功能的聊天室最大的区别是:允许客户端的屏幕显示不同的内容,而不象没有此功能的聊天室那样每个人的屏幕显示的内容都是一样。这样,我们就没有办法使用前面所提到的那种方法:将聊天记录存入一个application对象的变量,然后再读取它的值。我们必须多建几个变量来解决这个问题。 方法1通过以下代码来解决: 这是发送方代码: 这是接收方代码: 在上述代码中,session (“destname”)用来存放目的用户的用户名;private data用来存放私聊内容;session (“nickname”)用来存放用户的妮称(可以在用户登录的时候将用户的妮称写入该变量)。因为session对象的变量是私有的,所以每个用户的session (“nickname”)变量的值是不相等的。发送方只要将目的用户的妮称写入session (“destname” ),然后通过上述列出的发送方代码就可以将私聊内容发至想要发送的对象,而其他用户是收不到此内容的。例如:session (“destname”)的值为abc,那么在发送方就会产生一个名为application(“ abc”)的变量。在接收方,如果他的session(“nickname”)的值也为abc的话,那么接收方的那个application对象的变量就为application (“abc”)。如此一来就收到了发送方发来的私聊内容,而其他用户则收不到此内容。但是,新的问题也就出现了:大家知道,session对象会在用户会话超时或结束时自动销毁以释放空间,而application对象要等到服务器关掉才会销毁。这样一来,如果用户数多并且这些用户都使用私聊功能的话,那么application对象会变得很多,而且不会随着用户的减少而减少。其结果就会使服务器崩溃。解决这个问题我使用了下面这个方法。 方法2 仍然按照上面这个方法的思路,不过这次稍加改进。其实,上面的这个方法是为每个用户建立一个存放私聊数据的变量,这种方法不好。那么有没有办法只用一个变量来存放用户的私聊数据呢?答案是肯定有。不过在程序的实现上要比上面的那个方法复杂一些。所需建立的变量如下: application (“private data”),用于储存所有用户的私聊数据; application (“privatelist” ),用于储存使用私聊功能的用户名单; application (“chat content”),用于储存非私聊内容数据; session ( private data ),用于储存一个用户的私聊数据; session (“ nickname” ),用于储存用户的妮称; session (“destname” ),用于储存目的用户的妮称。 在发送方的程序里,需要将用户所发出的私聊数据写入application (“privatedata”)变量,同时将存放发送对象妮称的session (“destname”)写入application (“private list”)变量。在写入私聊数据时,为了将不同用户的私聊数据加以区分,可以在数据与数据之间加入一些标识符以示区别。在接收方的程序里,我们可以根据session (“nickname”)变量的值,在变量application (“private list”)中查找是否有和自己的session (“ nickname”)相同的值。若有,则表明有人发给我私聊数据。然后就可以到application ( private data)变量中查找有关自己的私聊数据,并将其储存在session (“ private data”)变量中。这样就完成了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于江宁区农副产品买卖合同
- 2025双边贸易合作合同范文
- 幼儿教师故事表演培训
- 2025年江苏省盐城市建湖县八年级中考模拟生物试题
- 外科护理核心要点
- 法医学死因分析
- 小儿急性间歇性卟啉病的临床护理
- 2025年小学学校教师整风运动工作总结模版
- 食堂培训总结
- 【SensorTower】2023年流媒体应用报告246mb
- 字节跳动经营分析报告
- 测绘地理信息从业人员保密知识培训
- 起重机委托使用协议书范本
- OEE培训课件教学课件
- 2023-2024学年江苏省南京市玄武区八年级下学期期末数学试题及答案
- 2025年山东出版集团招聘笔试参考题库含答案解析
- 2025年济南铁路局招聘笔试参考题库含答案解析
- 药品养护管理制度
- 《消防应急疏散培训》课件
- 药品类体外诊断试剂专项培训课件
- 《数据资产会计》 课件 第三章 数据资产的确认和计量
评论
0/150
提交评论