毕业设计(论文)-基于BS的网络聊天室的实现.doc_第1页
毕业设计(论文)-基于BS的网络聊天室的实现.doc_第2页
毕业设计(论文)-基于BS的网络聊天室的实现.doc_第3页
毕业设计(论文)-基于BS的网络聊天室的实现.doc_第4页
毕业设计(论文)-基于BS的网络聊天室的实现.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题 目 网络聊天室的实现 目 录摘 要IAbstractII第一章 绪论11.1 本系统研究意义及国内外发展概况11.2 本系统的设计目的、目标、应用执行机制、要求2第二章 开发环境与技术的介绍42.1 开发环境42.1.1 硬件环境42.1.2 软件环境42.1.3 环境配置42.2 技术的介绍52.2.1 ASP简介52.2.2 ASP特点62.2.3 ASP与传统数据相比较7第三章 需求分析83.1 可行性研究83.1.1 经济可行性83.1.2 技术可行性83.1.3 操作可行性83.2 理解需求83.3 需求分析93.3.1 前台功能及页面逻辑结构93.3.2 后台管理系统功能及页面逻辑结构10第四章 概要设计114.1 系统总体设计114.1.1 系统功能模块设计114.2功能模块流程图124.2.1登陆模块流程图124.2.2聊天主页流程图124.2.3管理功能模块流程图134.3 体系结构图134.4 系统建模UML144.4.1 系统用例图144.5 数据库设计154.5.1 E-R图154.5.2 数据表15第五章 详细设计175.1 信息的组织、存储、共享的实现185.2 登陆模块195.3 在线人员列表模块205.4 公共聊天和私聊功能模块205.5 聊天内容自动刷新235.6 用户资料管理245.7 在线人员管理模块245.8 聊天内容管理245.9 表情功能的实现25第六章 系统测试276.1 系统调试276.1.1 Microsoft 脚本调试工具276.1.2 启用调试276.2 测试方法286.2.1 单元测试2 白盒测试2 黑盒测试286.2.2 组装测试286.2.3 确认测试286.2.4 系统测试296.3 系统维护29总 结30参考文献(References)31致 谢3232基于B/S的网络聊天室的实现摘 要随着互联网的飞跃发展,基于网络的应用层出不穷。ASP( Active Server Page)是一项较为成熟的Web技术。ASP功能强大、本领卓越,ASP功能的应用几乎没有什么限制,ASP是服务器端的脚本环境,可以开发动态的、交互的、高效的Web站点。本文采用了软件工程学的方法实现了聊天室的系统设计与开发,简单介绍了ASP技术相关的基础知识,包括ASP的脚本语言、内置对象。详细地描述了各个模块的功能及实现方法。利用ASP技术开发聊天室,解决了如聊天自动刷新、框架网页与变量的传递、聊天界面、屏蔽等问题,对开发过程中的难点进行了分析和研究,并通过系统结构图,功能模块图等方式结合源程序形象地描述。所实现的聊天室具有良好的人机交互界面。关键词:网络;聊天室;ASP;系统设计Chatting room Based on B/S Of DesignAbstractGo up the selection that the net becomes more and more people in being living at present the community that WEB is popular. In the wake of each other speedily developing of networking , the relevant electric network technique also emerges in an endless stream . Item new technique which developed in nowadays ASP in active Web Site being living ( Active Server Page ) even though the past few years . The ASP meritorious service capacity is powerful and the capability is excelling in , and what limit is not nearly there is when utilizing the ASP meritorious service capacity . ASP is the server sure enough scenario environment , and may open up the developments and mutually and Webs Web Site high efficiency . Employ the Web Site that ASP establish have the dynamic paging .The main introduction of the original ASP technique the person who is mutually related rudimentary knowledge , by means of the analysis to scripting language , integral target , ASP together with the data bank joint of ASP and so on technique , probing into to establish to chat room design of system, means and design process , the meritorious service detailed to analyze every module be able to reach the realization means. The problem such as utilizing ASP technological development to chat room , and resolving refurbishing and frame web page together with variable transmission and chatting interface and shielding and so on as chatting , and uniting the source program to expound, the chatting room that the original was achieved has the well user interaction interface , and the link is debugged to the course , yet demonstrates the application Web Site .Keyword: Web ; Chatting Room ; ASP ; Design of system第一章 绪论1.1 本系统研究意义及国内外发展概况互联网技术的广泛应用,对整个世界政治、经济、文化等各方面产生了十分广泛和深远的影响。它奇迹般地崛起、爆炸般地扩容,令全世界瞩目。如今,大大小小的网络已遍布全球,并通过Internet实现了互联。据估计,Internet的规模大约每年要翻一番,网络的应用领域也从做出的科技和教育领域,很快进入到文化、产业、政治、经济、新闻、体育、娱乐、商业以及服务行业。Internet影响着世界,同时也在影响中国。随着信息流量的日益加大,计算机网络技术得到飞速发展,各类网站不断涌现出来。而最受青睐的应属具有动态效果的网站,其页面的内容使用的不仅仅是标准的HTML代码。而是加入了各种“交互性”。有人给动态网站、动态页面的概念制定了以下几条规则:1. “交互性”:即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大事所趋。2. “自动更新”:即无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量。3. “因时因人而变”,即当不同的时间、不同的人访问同一网址时会产生不同的页面。而将网站“动态”化的方法很多,这要看来源于何种需求。如果是个人网站的维护者,使用的是免费主页空间,那么绝大多数情况下你只能使用Java、Java Script和最新的DHTML技术,如果是主页空间提供者能给予你CGI权限或ASP支持,那么你将能非常幸运地发挥真正的动态技术。目前,常用的“动态”网站设计方法有:1. CGI(Common Gateway Interface)通用网关接口的传统方式。2. IDC(Internet Database Connector)互联网数据库连接头。本设计所制作的网络聊天室采用了ASP技术。随着网络的发展,网络聊天室已经成为人们进行交流的一个不可或缺的空间,人们可以在聊天室里谈论喜欢的话题。在网络聊天室系统中,注册用户可以发表对话题的讨论意见。系统存在两种身份的用户,管理员和用户。管理员可以对注册用户的信息查询修改删除和浏览,对聊天内容的管理;用户可以注册自己的基本信息并允许修改,登录聊天室后,选择对象发表意见。1.2 本系统的设计目的、目标、应用执行机制、要求本系统目的:伴随着网络的出现,网页逐渐融入人们的生活。快速及时的信息浏览,五彩缤纷的网上信息,使网络与人们的生活息息相关,于是世界上又出现了第三媒体Internet。它打破了地域限制,真正使信息得以共享,改变了人们的工作和生活方式。制作网页是企业和个人的宣传自己的重要手段,同时也是学习者获取学习信息的重要手段。尤其是在交流领域,人们对信息的需求有了更新,更高的要求,而网页由于本身所具有的信息量大,传递快速,没有时空限制等特点恰好满足这种要求。所以网页也逐渐成为一种新兴的交流资源。也正是由于网络实现网站的数据信息能够进行实时交互,保证网站数据的实时性。本系统的设计目标:完成一个基于浏览器服务器方式的多功能的网络聊天应用系统,客户通过浏览器可以发送信息,然后其他所有用户接收到该信息并将其显示在界面中,服务器对信息进行有关处理并向适当的用户发送,同时在服务器端还将显示所有的在线用户。每个用户能通过Intemet和其他用户用文本和声音进行聊天。本系统的应用执行机制:假定所有的已注册用户列表已经放入服务器上的一个登录文件中,服务器端应用程序首先启动,等待用户的登录。当有用户启动客户端应用程序,并通过Intemet连接到服务器时,服务器将判断是否是已注册用户,如果是注册用户,则将该用户状态设为在线,并将此信息发布给所有的在线用户,使用客户端应用正确显示当前在线用户列表;如果不是注册用户,则拒绝服务。此时用户即可通过客户端应用程序同所有在线的其他用户用文本或声音进行聊天。本系统的要求:要求采用B/S模式,使用ASP语言开发。用户通过浏览器访问聊天室的主页,通过用户名,密码的身份验证,登录聊天室。在代码的编写上要考虑代码重用的思想等;在设计上,要考虑到易用性,操作简单,交互性好;在性能上,要求稳定,而且对各项操作的反应时间应该在用户能够承受的范围内。第二章 开发环境与技术的介绍2.1 开发环境2.1.1 硬件环境本系统采用的是B/S的架构系统,本文选用的操作系统是Windows XP,具体性能如表2.1所示:CPU 类型Intel Pentium 标称频率341MHz内存类型DDR内存大小256MB硬盘容量40GB硬盘描述7200转2.1硬件性能表2.1.2 软件环境本次系统开发选用的操作系统是Windows 2000;服务器为IIS; 开发工具为DreamWear,Visual Studio 2003;语言程序主要是ASP语言,数据库为Access。 2.1.3 环境配置选择Visual Studio 2003作为开发工具,它是一种处于市场领先地位的开发环境,并且缩短了开发周期,拥有易操作界面。Visual Studio的功能非常强大,有着非常好的集成开发环境。2.2 技术的介绍2.2.1 ASP简介 大约三年半前,微软的部分网页文件后缀已由Htm变成了ASP。这一变化虽小,但是意味深长。它包含蕴涵着相当深刻的技术变革,标志着微软对它的新技术充满信心,也标志着微软在动态Web技术方面,又向前迈出了一大步,因为它首次采用了ASP(Active Server Pages动态服务器主页)机制。 什么是ASP?在微软站点上对于ASP的权威定义是:Active Server Pages是一种开放式的非编译应用环境,使你能够组合HTML,Scripts和可重用的ActiveX服务器组件来建立动态的,强大的基于Web的商业应用。Active Server Pages支持基于US上的服务器端脚本并且完全支持VB Script和Jscript。”它是微软公司的新一代开发动态网页的技术,具有开发简单、功能强大等优点,可以非常直观简易地实现复杂的Web应用。 Microsoft的ASP不是一种语言,而是一套微软开发的服务器端脚本环境,ASP解释程序内含于IIS3.0,4.0和PWS4.0中,通过ASP可以结合HTML网页、ASP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。在ASP环境中,因为所有的程序,其中也包括所有嵌在普通HTML中的脚本程序,都在服务器端执行,所以不必关心客户端的浏览器是否能运行所编写的代码。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,提高了交互的速度。 所谓脚本是由一系列的脚本命令所组成文件。脚本语言是一种介于HTML和诸如JAVA, Visual Basic, C+等编程语言之间的一种特殊的语言,但它不具有编程语言复杂、严谨的语法和规则(但是根据微软的建议,最好在程序中设置使用严谨语法的声明)。与一般程序一样,脚本也可以将一个值赋给一个变量,命令WEB服务器发送一个值到客户浏览器,还可以将一系列命令定义成一个过程。所以,要编写脚本,只要熟悉至少一门脚本语言即可,如VBScript 。通过ASP这种环境,用户可以创建和运行交互式的动态网页,包括使用HTML表单收集和处理信息,上传与下载等等,就像访问者在使用自己的CGI程序一样。但是它比CGI简单。更重要的是,由于ASP使用的ActiveX技术基于开放设计环境,开发人员用户可以自己定义和制作组件加入其中,使动态网页几乎具有无限的扩充能力,这是传统的CGI等程序所远远不及的地方。此外,使用ASP还有一个优点,就在于ASP可利用ADO方便地访问数据库,从而可以利用ASP开发基于WWW的应用系统。2.2.2 ASP特点服务器端的编程一般来说比较难。例如采用CGI来编程时得学习一些相对比较难的编程语言如C/C+语言或者Perl语言,而在使用的时候,它们的效率也不高。每次某个访问者激活一个CGI脚本的时候,在服务器一端都要启动一个新的进程,如果CGI使用的是象Perl一样的解释性语言,服务器将另起一个解释器,这些都要消耗处理时间和存储器。为此,人们在最近几年陆续开发了一系列新技术来改变这种状况。ASP是最有代表性的一种。下面是ASP所独具的一些特点:1. 使用VBScript, JScript等简单易懂的脚本语言,结合HTML代码,即可快速地完成网站的应用程序。2. 无须编译,容易编写,可在服务器端直接执行。3. 使用普通的文本编辑器,如Windows的记事本,即可进行编辑设计。也可以选用具有可视化编辑能力的FrontPage开发环境。4. 与浏览器无关,用户端只要使用可执行HTML码的浏览器,即可浏览ASP所设计的网页内容。ASP所使用的脚本语言(VBScript, Jscript)均在WEB服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。5. ASP与任何ActiveX scripting语言兼容。除了可使用VBScript或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如REXX, Perl等。6. ASP的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人窃取,也提高了程序的安全性。7. 可使用服务器端的脚本来产生客户端的脚本。8. ActiveX Server Components(ActiveX服务器元件)具有无限可扩充性。可以使用Visual Basic, Java, VisualC+, COBOL等编程语言来编写你所需要的ActiveX Server Component。 从应用上看,ASP有如下的功能:l 处理由浏览器传送到站点服务器的表单输入。l 访问和编辑服务器端的数据库表。使用浏览器即可输入、更新和删除站点服务器的数据库中的数据。l 读写站点服务器的文件,实现访问计数器。l 提供广告轮播器、取得浏览器信息URL表管理等内置功能。l 由Cookies读写用户端的硬盘文件,以记录用户的数据。l 可以实现在多个主页间共享信息,以开发复杂的商务站点应用程序。2.2.3 ASP与传统数据相比较单从表现上看,ASP与用户浏览器紧密结合,与HTML语言融为一体,在做一个WEB网页时,可以用普通的文件编辑器,将经ASP认可的脚本语言嵌入其中。这样就使得HTML创作与程序开发无缝连接,环境统一。如果采用FrontPage 2000和Visual IntraDev1.0就可以同时得到一个所见即所得HTML环境和带语法分析器的程序开发环境。编程环境比较理想。从功能上看,如果不考虑非Windows平台,那么ASP是迄今为止功能最强的脚本语言,从它的执行方式,执行效率,可扩充性上看,还没有一种WEB语言能比上它。ASP支持多种脚本语言,其中VBScript是其默认的脚本语言,当然功能也最强大。正如前面所述,ASP完全建立在ActiveX基础之上,而ActiveX不仅仅是一种技术标准,允许软件同存在于网络环境中的另一个软件进行交互,它同时也是微软的一个战略方针,不遗余力地进行人力推广,现在几种流行的程序开发语言Visual C+、Delphi都支持ActiveX控件的开发。因此,ActiveX控件覆盖范围极其广泛,为程序开发提供了有力支持。甚至可以设想,在未来几年内,程序员就可以从多种定制好的ActiveX进行筛选,然后向搭积木一样进行程序开发。这种高度的可扩充性,也是其他传统技术所无法比拟的。从技术上看,由于CGI是进程机制,在访问量增大时,挤占系统资源。ISAPI针对这一缺点进行改进,利用DLL技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤同样繁琐。这两种技术和另一种普遍使用的开发动态网页技术Java都还存在着另外一个问题,那就是开发都很困难。程序的开发和HTML写作是两个完全不同的过程,需要专门的程序员开发。而较简单的开发技术如JavaScript利IDC(Intemet Database Connector)等功能有限,在讲求开发速度和效率的今天,它们目前还不可能被真正的程序开发人员所使用。第三章 需求分析需求分析是程序设计中最关键的一个步骤,而可行性分析是本设计在市场上得到应用和推广的必要调研,是其他步骤的基础。本章的其主要任务是“为了解决这个问题,目标系统必须做什么”。主要确定目标系统具有那些功能。在这个步骤里,我在用户那里搜集所有的对将要开发的系统的需求信息,并且把这些信息编写成为用户可以认可的需求说明书。3.1 可行性研究可行性分析是本设计在市场上得到应用和推广的必要调研,进行可执行性的分析是非常必要的,也是很重要的,从以下三方面阐述了聊天室在应用推广得到了强有力的保障:3.1.1 经济可行性开发本系统为用户和管理员带来了极大的方便,而且所用的人力、物力、技术、资金等的花费不大,所以今后获得的经济效益一定会大于开发成本。3.1.2 技术可行性因为该系统是要求是实现动态交互式的页面设计及对数据库的查询、插入、删除等操作,而本系统采用ASP技术设计网页及使用ACCESS数据库来存储数据,所以技术上是可行的。3.1.3 操作可行性由于本系统安装了ACCESS,IIS所以只要打开IE浏览器,输入IP地址即可进入本系统,操作方便。3.2 理解需求理解需求是在问题及其最终解决方案之间架设桥梁的第一步。开发者只有和用户充分理解了需求之后才能开始设计系统,否则,对需求定义的任何改进,在设计上都必须大量的返工。下面是是用户对简易聊天室系统的需求规格说明。(1) 便捷性:只要有浏览器和网络,你就可以任何时间任何地点登陆聊天室;(2) 广泛性:聊天室系统具有开放性,许多非互联网络上的用户可以通过网与互联网络上的用户相互沟通。(3) 即时性:它可以做到即使发送即使接受的效果,相比于电子邮件在时间上更加优势; (4) 廉价性: 网络的空间几乎是无限的,但价格相对于所获的得信息而收取的费用却是如此的低廉。相对手机收费而言,聊天室更让人接受。3.3 需求分析需求分析是从用户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对客户业务问题的分析,规划出系统的功能模块,即定义用例。这个步骤是对理解需求的升华,直接关系到该系统的质量。 3.3.1 前台功能及页面逻辑结构用户登录系统:1)用户注册;2)用户资料修改;3)用户密码修改;4)用户登录;5)聊友查看房间分类:根据主题 用户通过“用户注册”注册用户账号、呢称、密码等资料,然后通过“用户登录”登录到主题类别固定房间列表,即可进入房间进行聊天;登录后用户可以修改自己的用户资料,修改密码、昵称 根据以上功能,页面逻辑结构如下图所示:聊天室主页用户注册用户登陆聊友查询密码查找资料变更主题聊天室1主题聊天室23.3.1前台页面逻辑结构图3.3.2 后台管理系统功能及页面逻辑结构1)用户资料管理:聊天主题设定2)在线用户管理:姓名查找、删除过期账号.4)聊天内容管理:聊天记录6)退出根据以上功能,具体页面逻辑结构图所示:聊天室主页后台管理聊天内容管理在线用户管理用户资料管理3.3.2 后台页面逻辑结构图第四章 概要设计4.1 系统总体设计4.1.1 系统功能模块设计聊天室系统客户端登陆系统发表内容聊天记录显示聊天记录管理在线人员列表用户资料管理在线人员管理服务器端图4.1.1 系统功能模块l 登陆模块登陆页(index.asp):主要用于记录登陆者聊天者的昵称、登陆时间、IP地址等信息。l 发表模块(chat.asp):主要用于发送谈话内容,选择私聊对象,清空谈话内容,选择动作,显示帮助文件,退出等多项功能。l 内容显示模块:分为对公共聊天和私聊两部分。对所有人的为(text.asp),私聊为(scr.asp)。实现了对话内容,动作等的显示。l 在线人员列表(online.asp):显示所有聊天人员名称,可以提供自动和手工刷新人员列表的功能。l 管理功能模块:主要用于管理聊天室,包括用户资料管理、在线用户管理、聊天内容管理等功能按钮。4.2功能模块流程图开始4.2.1登陆模块流程图登陆界面用户名/密码验证用户名和密码 N进入主页 Y4.2.1 登陆模块流程图开始选择聊天对象/表情/字体颜色,输入发送聊天内容,按发送按钮主页发送聊天内容结束4.2.2聊天主页流程图4.2.2 聊天主页流程图4.2.3管理功能模块流程图开始管理员页面查看用户资料/在线人员/聊天内容是否合法删除 N结束4.2.3 管理功能模块流程图4.3 体系结构图当用户向服务器聊天室所在页面提出浏览请求时,将得到一个(一组)ASP返回页,也即是已经进入聊天室。Web服务器用户工作站用户工作站 服务器向用户端响应返回ASP页面 浏览器向服务器提出请求 浏览器向服务器提出请求 服务器向用户端响应返回ASP页面图4.3 体系结构图4.4 系统建模UML需求分析完成后,接下来的工作是对系统建模。因为UML很适合于对逻辑模式和物理模式建模,所以我对系统进行UML建模。下面是简易聊天室系统的UML建模过程。这里采用Rational Rose进行UML建模.4.4.1 系统用例图用例就是系统和用户的交互,是系统提供的功能模块。用例的划分实际上是对事务功能的划分。通过划分事务的用例有助于用户的理解。通过以上的事务的划分,可以得出系统用例为:1 用户登录聊天室2 选择发送对象3 发送聊天内容4 接收聊天内容5 查看在线人员列表通过以上的用例图划分得出:图4.4.1 系统用例图4.5 数据库设计用户管理员管理员ID密码聊天主题聊天记录录密码昵称用户ID用户ID聊天对象编号内容注册时间设置时间聊天内容发送时间本系统需要创建4个数据表。这几个数据表中,存放了网络聊天室系统所需要的数据。4.5.1 E-R图 1 1 M 1 1 N4.5.1 E-R图4.5.2 数据表用户基本信息表(UserInfo):列名数据类型长度允许空主键功能描述UserIdInt4否是用户IDPasswordVarChar30否否用户密码UserSexVarChar2否否用户性别RegTimeTime8否否注册时间UserNameVarChar30否否用户昵称TelephoneVarChar15否否用户电话AddressVarchar50否否用户地址ZipcodeInt5否否用户邮编QQInt15否否用户QQEmailvarchar30否否用户邮箱Homepagevarchar50否否用户网址UserIdInt4否是用户识别码Logintimetime8否否最后登陆时间isonlineBoolean1否否在线或脱机TimeCountint4否否登陆次数UserIPInt4否否用户IP用户聊天记录(ChatInfo)列名数据类型长度允许空主键功能描述UserIdVarChar4否是用户IDSayToVarchar4否否发送对象SayContentVarChar200否否聊天内容TextColorvarchar8否否字体颜色PutTimeTime8否否发送对话时间Ispublicboolean1否否是否私聊聊天主题列表(ChatSubject)列名数据类型长度允许空主键功能描述NumInt4否是识别号自动生成contentVarChar30否否主题putTimeTime 8否否设定时间管理员列表(Admin)列名数据类型长度允许空主键功能描述UserIdInt4否是管理员IDPasswordVarChar30否否管理员密码第五章 详细设计通过登录界面进入聊天室后,用户进入聊天室,用户可以从聊天用户窗口看到该聊天室中所有用户id;在聊天窗口中看到随时更新的聊天信息;用户可以给所有人或某一个聊天用户发送公共的聊天信息,可以给自己的聊天信息定义不用的颜色,还可以加上丰富的表情语言,这个聊天内容大家都会看到;用户还可以给某个用户发送私人的聊天信息,这种信息属于私聊信息,只有发送者和接收者自己可以看到;此外聊天窗口中还有一些系统公告,比如某某登陆聊天室、某某离开的消息。若用户想退出,按退出键便可离开聊天室 。根据以上的功能, 无论使用何种手段实现聊天室程序,都应能解决如下一些技术要点:1 组织、存储所有聊天者所说的话(即聊天信息),以期达到最基本的能在多个用户(即多个聊天者)之间实现信息共享。聊天室程序的速度瓶颈(如果有的话)就在这里。当然还有一类数据如聊天者的个人资料,以及其在本聊天室中目前的权限级别等等,此类数据因无须共享,对聊天的速度并没有本质上的影响,所以系统降低了对它们进行组织存储的要求,我们可以使用磁盘文件等进行存储;2 实现登陆功能;3 实现人员列表;4 实现公共聊天和私聊;5 解决聊天刷新;6 实现字体颜色;7 实现表情;8 实现聊友查询。5.1 信息的组织、存储、共享的实现 在实际应用中,聊天室程序并不需要存储所有聊天者所说的所有话,而仅需存储正在室内的聊天者们最近所说的若干句话(视系统特点、程序制作者风格等而定,一般在20- 60句话不等,当然能让聊天者自己在一定的范围内进行选择设定为最好),这些信息也无须作长期永久性的存储。因此,我们可舍弃磁盘文件及后台数据库的方法,直接使用内存进行操作,这样可大大提高信息的读写速度,从而能较好地解决聊天室的速度瓶颈问题。 同时,这些信息经过组织存储后,在聊天者的浏览器端显示时要求具有顺序性,为了便于显示、加快显示速度,对这些信息要求具有操作的连续性。不管在何种语言中,数组是能同时满足这两项要求的数据结构之一。 在聊天室程序中,完成了信息的组织存储,仍有另一关键技术待解决:如何能在多个程序或一个程序的多个运行实例之间进行信息共享。这一技术在不同的编程语言中有不同的解决思路,如共享内存,数据文件;或者使用服务器/客户模式程序实现在多个程序间完成数据交换。 由于Application对象的设置值为应用的所有用户共享,我们可以用它来保存聊天室的发言。为了便于处理,引入一个数组来存放发言,在global. asa文件的Application- On-Start事件代码中定义数组并将其赋给一个Application对象,数组的大小定为12,是为了限定显示行数为12行,保证用户阅读信息的方便,不用拉动垂直滚动条。利用模12运算按循环队列机制来填写数组,并将最新录入的发言显示在最底部。global. asaSUB Application.OnStart Dim m chats (12) application(”gchats)=m chats application(gcounte r)=0end sub为了防止两个用户为写入发言同时对Application对象变量修改,从而导致一个用户的所作的修改被另一个用户的操作所覆盖,必须解决多用户并发写入问题,Application对象的Locked属性可以用来只允许当前用户编辑Application对象的值,操作结束必须用UnLocked来释放其对Application对象的独占。如果在加锁时有其他用户请求编辑Application对象,则这些用户要排队等待,直到Application对象被解锁。为了处理方便,在该程序中创建了Application对象变量的本地引用,这样做是为了简化代码,使用简短的本地变量而不是繁琐的名字,如: Application( gchats)(i) .5.2 登陆模块要实现登陆的功能就是在用户输入昵称的时候判断是否为空或者是否昵称重复,如果是则不能进入聊天室,要求用户重新输入,如果否则用户进入聊天室。这里只需要一个判断语句就可以完成,把表单中的nickname文本框中的内容存入nickname变量中,并判断nickname变量是否为空,如果是则返回登陆界面;如果不是则把“来自某IP地址的某某同学在某时间来到我们身边啦!”这句话存入application(“show”)变量中(这样同时实现了系统公告)。并通过session(sname)=nickname application(sname)=nicknameapplication(allname)=nickname&application(allname)来获得所有人的名字。最后使用response.redirectchat.asp返回到聊天界面。 图5.2 登陆界面5.3 在线人员列表模块人员列表的实现就是把在index.asp中存入application(allname)中的名字使用显示出来,在这里利用实现手工刷新。5.4 公共聊天和私聊功能模块对于没有私聊功能的聊天室来说,其实每个用户的屏幕上显示的内容是一样的。所以只要在Global .asa中建立一个公共变量来储存聊天内容,然后将该变量的内容显示在客户端的屏幕上就可以了。在ASP中,只要建立一个Application对象的变量,然后对其读写就可以实现了。写入代码如下: 以上代码只需放入发送消息的ASP文件中就可以了。其中,New Msg为作者定义的一个储存新聊天内容的变量,它用来储存用户新发出的消息。在网络上,发送消息可能是一个并发事件。如果多个用户同时更改这个Application变量,就会发生错误。所以,上述代码中使用了Application . Lock和Application . UnLock来避免此问题的发生。而读出此变量内容并将其显示在网页上则较为简单,只要将下述代码放入用于显示的ASP文件中即可:私聊功能实现思路:知道了基本聊天室的实现方法,我们再来看看如何实现具有私聊功能的聊天室。对于一个拥有私聊功能的聊天室,与没有此功能的聊天室最大的区别是:允许客户端的屏幕显示不同的内容,而不象没有此功能的聊天室那样每个人的屏幕显示的内容都是一样。这样,我们就没有办法使用前面所提到的那种方法:将聊天记录存入一个Application对象的变量,然后再读取它的值。我们必须多建几个变量来解决这个问题。l 方法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对象会变得很多,而且不会随着用户的减少而减少。其结果就会使服务器崩溃。解决这个问题我使用了下面这个方法。l 方法2 :仍然按照上面这个方法的思路,不过这次稍加改进。其实,上面的这个方法是为每个用户建立一个存放私聊数据的变量,这种方法不好。那么有没有办法只用一个变量来存放用户的私聊数据呢?答案是肯定有。不过在程序的实现上要比上面的那个方法复杂一些。所需建立的变量如下:1. Application (“Private Data”),用于储存所有用户的私聊数据;2. Application (“PrivateList” ),用于储存使用私聊功能的用户名单;3. Application (“Chat Content”),用于储存非私聊内容数据;4. Session ( Private Data ),用于储存一个用户的私聊数据;5. Session (“ Nickname” ),用于储存用户的妮称;6. Session (“destname” ),用于储存目的用户的妮称。 在发送方的程序里,需要将用户所发出的私聊数据写入Application (“PrivateData”)变量,同时将存放发送对象妮称的Session (“destname”)写入Application (“Private List”)变量。在写入私聊数据时,为了将不同用户的私聊数据加以区分,可以在数据与数据之间加入一些标识符以示区别。在接收方的程序里,我们可以根据Session (“Nickname”)变量的值,在变量Application (“Private List”)中查找是否有和自己的Session (“ Nickname”)相同的值。若有,则表明有人发给我私聊数据。然后就可以到Application ( Private Data)变量中查找有关自己的私聊数据,并将其储存在Session (“ Private Data”)变量中。这样就完成了私聊数据的发送与接收。不过,在接收方的程序里还需加入一段将自己的妮称和有关私聊数据从Application (“PrivateList”)和Application (“PrivateData” )中清除的程序。因为,一旦取过一次数据之后,如果不清除,则当程序再次执行时还会再取一次。这样就会造成显示重复信息的错误。5.5 聊天内容自动刷新 要使每个进入聊天室的人都能看到别人说得话,即使在他不发言的时候,也要如此这就要求客户端应定期刷新,及时显示别人说得话,这可以在客户聊天显示区域设置定期(如5s)刷新,在页面头部插入但这样做的一个结果是:用户的聊天显示区域不停的刷新,即使没人说话的瞬间也是如此这种强烈的刷新感将使用户难以忍受,无法满足要求。为解决这一问题,在框架中另加一隐藏的页面,每5s刷新一次,用来判断用户有没有及时接收信息,没人发言时则不做任何事情,有人发言时则利用Windows的document对象直接在显示页面中写,而不是让聊天显示页面自己去刷新,这样客户端就不会有刷新感,并能及时接收信息。parent. Msg. document. write(“”);每个在线聊天的用户要往聊天室写入发言, 既通过提交动作来更新发言显示页面; 另一方面, 其他用户的发言也需及时告诉每个用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论