网络聊天系统的设计与实现
例如:银行ATM的前置机和数据处理的主机之间即构成客户机/服务器网络模式;电话银行的前置机和银行数据处理机之间也构成这种网络模式结构等。这样,如何在前置机和数据主机之间进行信息交换,即进程网络通信,就成为实现这种网络模式的基础。而TCP/IP的套接字技术是解这一问题的有力工具。它从提出时就一直发挥着愈来愈重要的作用,并已成为UNIX操作系统下TCP/IP网络编程标准;甚至WINDOW、JAVA都配有它的通用接口。有了这个强有力的工具,我们可以实现异种机、异种操作系统应用程序间的相互连接和通信。套接字是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点。它构成了在单个主机内及整个网际间的编程界面。一般来说,跨机应用进程之间要在网络环境下进行通信,必须要在网络的每一端都要建立一个套接字,两个套接字之间是可以建立连接的,也是可以无连接的,并通过对套接字的“读”、“写”操作实现网络通信功能。类似于UNIX系统中的I/O概念,像文件那样有打开、读、写、关闭的方式。
2.4 开发工具与运行环境
本实验的主要开发工具是Eclipse,Eclipse是开放源代码的项目,可以在网上免费下载Eclipse的最新版本,一般Eclipse提供几个下载版本:Release,Stable Build,Integration Build和Nightly Build。Eclipse本身是用Java语言编写,但下载的压缩包中并不包含Java运行环境,需要用户自己另行安装JRE,并且要在操作系统的环境变量中指明JRE中bin的路径。
2.5 其他技术
诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。
构建服务器应用程序的一个过于简单的模型应该是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。实际上,对于原型开发这种方法工作得很好,但如果试图部署以这种方式运行的服务器应用程序,那么这种方法的严重不足就很明显。每个请求对应一个线程(thread-per-request)方法的不足之一是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请
8
网络聊天系统的设计与实现
求的时间和资源更多。
除了创建和销毁线程的开销之外,活动的线程也消耗系统资源。在一个 JVM 里创建太多的线程可能会导致系统由于过度消耗内存而用完内存或“切换过度”。为了防止资源不足,服务器应用程序需要一些办法来限制任何给定时刻处理的请求数目。
线程池为线程生命周期开销问题和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使应用程序响应更快。而且,通过适当地调整线程池中的线程数目,也就是当请求的数目超过某个阈值时,就强制其它任何新到的请求一直等待,直到获得一个线程来处理为止,从而可以防止资源不足。
9
网络聊天系统的设计与实现
3 网络聊天系统的分析与设计
3.1 可行性分析
计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以自傲远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。网上聊天系统作为一种方便人们之间联系的使用系统便应运而生。网上聊天系统是人们进行交流和联系提供的一个平台。通过提供完善的网上聊天系统的管理,可以达到增进人与人之间的交流和沟通。
在Internet上,qq,MSN,飞信等网上软件,极大程度方便了各地友人之间的联系,也使世界一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发信息。现在,企业,机关,学校都纷纷建立起自己的局域网。在局域网里,虽然可以通过文件共享的方式进行通讯吗,但单单使用这种方式,是不方便的。首先在局域网里的网上邻居,只能看到机器名,不清楚对方是谁,也不知道对方机器有什么资源可以共享,而且当局域网机器很多时,这种方式更加麻烦。现在有很多局域网内机器不使用服务器通讯软件,这种软件小巧而且轻便,也能解决一部分问题。但是有服务器通讯的软件,有着不可比拟的优势;可以发送离线信息,不管用户当时是否在线,下线上线时,就可以看到这条信息了;可以保存用户的个人信息或介绍,供人查看。而且,不适用服务器的通讯软件,是以机器为通讯单元的,而有服务器的通讯软件是以人为通讯单元的。总之,有服务器的通讯软件在局域网上,还是有很大的用途的,喂局域网上通讯,带来极大地方便。
3.2 需求分析
使用JAVA及数据库技术相结合,编写一个聊天系统软件。这个系统提供多个用户及时并发通信的平台。未注册用户可以注册成系统会员,已注册用户可以通过登录进入聊天系统。在系统中用户可以选择进入某一个聊天分区去聊天,也可以与特定的用户聊天。 提供一个在线实时沟通平台。进入系统的用户可以选择自己的聊天对象。用户没有专业的计算机知识,所以需要一个友好简单的界面。用户有娱乐需要,所以需要提供娱乐节点。用户通过软件进行沟通,应提供多种方式,如网络视频,音频聊天等。要求可靠性高,能在由于系统问题或其它原因
10
网络聊天系统的设计与实现
产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高的容错性能。具有宜操作性,程序简单易懂,容易上手使用。设计界面是,简化界面的复杂性,模拟QQ等现有即时通讯工具的界面,使用户能很容易看懂并使用。模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。
3.3 系统总体设计
根据网络应用程序的特点,网络在线聊天系统应就有即时,快速的特点。服务器端和客户端应就有不同的功能特性。对于服务器端应能够正确地建立与客户端的连接并能正确地断开,能即时地接收、处理和发送接收到的数据。能及时地通知在线用户当前好友在线状况,能够处理非正常数据的能力。对于客户端应能够快速地检查是否能够连接到服务器端。能正确的获得和反映当前好友在线情况。能够正确的与特定好友交流。能及时地接收到服务器端地数据,并能即时处理数据,并能将处理结果反映给用户。服务器端能够正确地、无冲突地启动服务器。监听指定的端口,等待用户的连接。 建立与客户端的逻辑连接,并能通知其他好友。 向新进入的好友发出已上线的好友名单。接收客户端的消息请求,并能正确无误地处理消息,并能发出消息到客户端。反映当前在线人数和在线好友状况。及时地反映发出地消息和聊天消息。当好友断开与服务器端地连接时,服务器能够正确地断开连接,并通知其他用户。当用户违反聊天系统规定时,服务器系统管理员能够断开与此用户的连接。当服务器关闭时,应通知所有用户。客户端能够正确启动应用程序,并能向服务器发出连接请求。反映当前好友在线情况。能够向群体或指定好友发出消息能够及时接收好友发出消息,并通知用户。能够正确地断开与服务器端地的连接。
11
相关推荐: