《聊天室-论文.doc》由会员分享,可在线阅读,更多相关《聊天室-论文.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、内蒙古工业大学本科毕业设计说明书摘 要从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术开发了本聊天室工具。该工具具有聊天室聊天、二人私聊、表情的应用以及请离用户的功能。论文主要对当今聊天软件的发展情况、与该聊天软件相关的各种技术以及该聊天工具的实现做了一个详细的阐述。本聊天室设计初衷是为软件开发人员在局域网中方便交流,减少成本,消除由于交流不同带来的开发成本上升。作为计算机网络的应用之一聊天工具,受到了用户的普遍爱好,它把人们带进了一个虚拟的网络世界,大大的加深了人们之间的联系。它将会作为未来人们通过因特网相互联系和娱乐的主要平台。聊天工具的开发主要用到了网络通信技
2、术、语音的采集、压缩、传输、解压缩以及回放等技术,文件传输技术、windows的多线程技术以及视频的采集、压缩解压缩技术等。本软件基于Socket通信,在此基础上,实现点对点聊天、广播聊天、一对多聊天、悄悄话以及表情,可以运行于任何支持TCP/IP协议的机器上。用到了多线程的设计,因此线程之间的同步是一大关键之处。由于系统采用C/S(Client/Server)结构,客户端与客户端以及客户端与服务器端需要传送一些控制消息,因此系统需要自定义一些消息类型,这是该聊天工具的又一大关键之处。关键词:网络通信;私人聊天;Socket;Java GUIAbstractFrom actual projec
3、t application angle embarking, take the computer network principle as the instruction, in the union current network some commonly used technology development this chat room. This software has the chat room to chat, two people private to chat, the expression application as well as kick out users func
4、tion.The present paper mainly to current chats softwares state of play, with to chat the software related each kind of technology as well as how does this chat room to realize has made a detailed elaboration.The original design intention of this chat room is facilitates the exchange for the software
5、 developers in the local area network, reduces the cost, eliminates, because exchanges the development cost rise which brings differently. Chat room is one of computer networks applications, which has received users universal hobby. It has taken people into a hypothesized network world,deepening peo
6、ples relation. It will the main platform through the Internet mutual connection and entertainments in future. The development of chat room mainly to use network service technical, the file transfer technology, the windows and so on technology, pronunciation gathering, compression transmission, solut
7、ion compression and multi-thread technology as well as video frequency gathering, the compression solution compress technique and so on. This software based on the Socket correspondence, based on this, realizes chats, the broadcast to chat, one to many to chat point-to-point, the intimate conversati
8、on and the expression, may move in any supports the TCP/IP agreement on the machine. With multi-thread design, therefore between the thread synchronization is place of the big key. Because the system uses the C/S (Client/Server)structure, the client side and the client side as well as the client sid
9、e and the server end need to transmit some control methods, therefore the system needs from defines some message type, this is another key of this chat room.Keyword: Network service; Personal chats; Socket; Java GUI目录引言1第一章 应用技术简介21.1 Java语言简介21.2. J2EE平台简介21.3 网络通信协议21.3.1 TCP/IP整体构架概述21.3.1 IP协议31
10、.3.1 TCP协议及端口31.4 Socket与多线程31.5 Java GUI4第二章系统分析52.1 对已有聊天软件的分析52.1.1 功能分析52.1.2 网页聊天室52.1.3 缺陷52.2 项目开发的主要内容62.3 项目开发的意义62.4 系统方案说明62.5 系统其他要求72.5.1 系统性能要求72.5.2系统环境要求72.6结构流程82.6.1 服务器结构流程图82.6.2客户端结构流程图9第三章 程序详细设计103.1 聊天室服务器端设计103.1.2 服务器设计思想103.1.2 服务器端界面113.1.3.服务器端各主要类的定义及其功能113.1.4.服务器端用户管理
11、功能的设计与实现123.1.5.服务器端显示消息的功能设计与实现123.2.聊天室客户端设计133.2.1.客户端设计思想133.2.2.客户端界面143.2.3.客户端各主要类的定义及其功能143.2.4.客户端登陆的设计与实现143.2.5.客户端发送消息的设计与实现143.2.6.客户端显示收到消息的设计与实现15第四章 系统测试164.1 测试目标164.2 测试过程164.2.1 服务器测试164.2.2 客户端测试194.3 测试结果21结 论22参考文献23谢辞24引言自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧
12、密的联系在一起,大大的扩展了计算机的功能,人们越来越离不开计算机了。如今,作为网络应用之一的聊天工具,越来越受到人们的欢迎和重视。现在已有的聊天软件和聊天工具不胜枚举,流行的主要有QQ,ICQ,MSN Message,NetMeeting,mIRC和郎码UC和各种的网页聊天室等。这些软件特别是QQ升级很快,其功能是越来越来强大,将代表着聊天软件的发展方向。目前,聊天软件的功能除了最基本的文本聊天,已经可以语音聊天,图像聊天,视频聊天,文件传输等三维聊天,还发展了短信发送,无线聊天,在线游戏等功能,可以预见在不久的将来,聊天软件将成为人们通过因特网相互联系和娱乐的主要平台。目前的聊天软件以Web
13、模式为主,但HTML作为一种样式语言,HTML技术本身却存在着诸多的缺陷,如它限制了交互式的选择,创建和重复使用交互式组件也比较困难,使用不同的扩充有将导致兼容性问题。尽管在目前的Internet上,它充当了数据表示的主要角色。这种不协调在Internet发展的初期还没有什么影响,但随着Internet上信息量的增多和交互性的加强使HTML显得越来越难以胜任。以Web服务器的传送方式可分为静态页面和动态页面。以HTML文件的形式传送固定数据称之为静态网页;对用户的请求进行分析,并将结果声称其它代码,利用客户端进行传送。此时,会生成以.cgi、.jsp、.asp等为扩展名的脚本程序文件,这些文件
14、根据服务器脚本的分析结果会有所不同,称之为动态网页。单纯的静态页面已经不能满足发展的需要。因为静态页面是用单纯的HTML语言组成的,它没有交互性。而为了与上网的用户产生交互的关系,随后便发展出了如JavaScript、CGI、ASP、JSP等各种客户端与服务器端的开发技术.JSP是第三代解决方案,它易于第二代解决方案相结合,创建动态内容,它使与其它各种技术相结合的以网络为基础的应用更容易和更快速的建立起来。这些技术包括:网络服务器,网络浏览器,应用服务器和其他开发工具。该毕业设计课题为基于C/S的应用Socket技术的聊天工具的设计与实现,它是在Socket通信和文本聊天的基础上来实现一对一、
15、一对多聊天。它要求该聊天软件能够自建服务器,被应用在一个个独立的自治系统中,灵活性很大。第一章 应用技术简介1.1 Java语言简介Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java
16、平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.6。1.2. J2EE平台简介J2EE是美国Sun公司刚刚推出的一种全新概念的模型,与传统的互联网应用程序模型相比有着不可比拟的优势。目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Ed
17、ition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC(Java DataBase Connectivity)应用程序接口(API, Application Program Interface)技术以及能够在Internet应用中保护
18、数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。1.3 网络通信协议1.3.1 TCP/IP整体构架概述TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。 该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通
19、讯协议采用 了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使
20、用实际网络(如Ethernet、Serial Line等)来传送数据。1.3.1 IP协议IP网络中每台主机都有唯一的IP地址,IP地址用户标识网络中的每个主机。IP地址是一个32为的二进制数序列。为了便于在上层应用中方便地表示IP地址,可以把32位的二进制数序列分为4个单元,每个单元占8位,然后用十进制整数来表示每个单元,这些十进制整数的取值范围是0255。如某主机的IP地址可以是192.166.3.4。IP地址由两部分组成:IP网址和IP主机地址。IP网址表示网络的地址,IP主机地址表示网络中的主机的地址。网络掩码用来确定IP地址中哪部分是网址,哪部分是主机地址。1.3.1 TCP协议及端
21、口IP协议在发送数据包时,途中会遇到各种事情。例如,可能路由器突然崩溃,使包丢失。又如,一个包可能沿低速链路移动,而另一个包可能沿高速链路移动而超过前面的包,最后使得包的顺序搞乱。TCP协议使两台主机上的进程顺利通信,不必担心包丢失或包顺序搞乱。TCP跟踪包顺序,并且在包顺序搞乱时按正确顺序重组包。如果包丢失,则TCP会请求源主机重发包。1.4 Socket与多线程Socket是建立在TCP/IP协议基础之上,可以看作是通信连接两端的收发器,服务器与客户都通过Socket来收发数据。除了Socket的第一个不带参数的构造方法以外,其他构造方法都会试图建立于服务器的连接,如果连接成功,就返回So
22、cket对象;如果因为某些原因连接失败,就会抛出IOException。当客户请求于服务器程序连接时,可能要等待一段时间。默认情况下,客户会一直等下去,直到连接成功,或者出现异常。如果希望限定等待连接的时间,可以通过connect(SocketAddress endpoint,int timeout)方法来设置超时时间,以毫秒为单位。在通信过程中,如果发送方没有关闭Socket,就突然终止程序,接收方在接收数据时会抛出SocketException。发送方发送完数据后,应该及时关闭Socket或关闭Socket的输出流,这样,接收方就能顺利读到输入流的末尾。多线程函数是Win 32的一个重要方
23、面,其编程技术较为新颖,在程序设计思路上不同于传统的模块结构化方法,比一般的面向对象的思路也较为复杂,尤其是对于多处理器平台的处理更为复杂。要设计出性能良好的多线程程序,不仅需要对操作系统的处理过程很清楚,还需要对具体应用有一个全面的认识,并对应用中各线程部分的关系非常清楚,对同步模块中的同步对象的具体含义应尽可能地清晰明了,以利于在程序中控制同步事件的发生,避免出现死锁或不能同步处理的现象。线程的创建比较简单,可以利用CreateThread或者AfxBeginThread来实现,终止线程可以用TerminateThread来实现。线程只见信息的共享可以利用全局变量来实现或者消息函数来实现。
24、多线程的设计关键之处在于线程之间的同步。1.5 Java GUI为了方便用Java构建图形用户界面,Sun最初提供了一个在所有平台下具有的独特Java外观的图形界面库。Sun在applet技术策略方面的首要伙伴Netscape提出applets应该维持和运行时平台一样的外观。他们希望applets在某一平台下在显示和行为上能够像其他应用程序一样。为了实现Netscape的本地外观的目标,在JDK的第一个发布版中包含了AWT这个库。AWT的缺省实现使用了对等机制,即每一个JavaGUI窗口部件都在底层的窗口系统中有一个对应的组件。第二章系统分析2.1 对已有聊天软件的分析如今,聊天软件种类繁多,
25、发展迅速。下面简要的对已有的聊天软件作一下总结分析。2.1.1 功能分析作为如今流行的聊天软件之一QQ,功能已经非常强大,基本上朝着三个大的方向发展,即个人及时通信,企业实时通信和娱乐资讯。它的功能主要有:(1)个人文本聊天(2)个人语音聊天(3)个人视频聊天(4)图像传输(5)文件传输(6)在线游戏(7)聊天室聊天(8)隐身,上线(9)群聊天(10)企业级实时通信聊天软件的发展方向是三维化,人性化,综合化。2.1.2 网页聊天室作为另一种聊天软件形式,网页聊天室也受到用户的普遍欢迎。网页聊天室的优点就是很好的利用了浏览器的功能,用户不需要安装任何新的软件,即可加入聊天室聊天。现在的网页聊天室
26、除了文本聊天之外,语音聊天也很常见。由于其客户端的简化,其功能必然受到限制。2.1.3 缺陷不管是QQ,还是网页聊天室,其最大的缺陷就是服务器固定,用户必须连接上服务器。如果想在一个自治系统之内(一个孤立的网络)通信,NetMeeting是一款不错的软件。它服务器有很强的灵活性,任何用户都可以建立自己的服务器。2.2 项目开发的主要内容设计并实现基于Socket的文本聊天程序包括广播聊天,二人私聊。涉及的内容包括用户登录,聊天方式的选择,附带表情,以及悄悄话选项。管理员身份可以看到私聊的和内容。由一个管理员运行ChatRoomServer建立主机服务器,其他用户运行ChatRoomClient
27、运行客户端,通过服务器的IP和设置的端口号与之建立连接。在服务器端可以显示用户登录的信息,客户端可以看见当前在线用户的人数和昵称。在由于开发目的的原因,所以不采用登录验证模式,只要输入用户昵称即可登录,对恶意刷屏或语言不礼貌者,管理员可以请离该用户。2.3 项目开发的意义本项目是作为本科的毕业设计课题提出来的,它规模适中,适合于个人开发,能够锻炼同学的学习新知识能力,锻炼同学的编程能力,锻炼同学的软件工程的思维方式。它的具体意义如下:(1)目前,计算机的发展离不开网络这一方向,网络将大大扩展计算机的功能,研究计算机在网络方面的技术以及应用,挖掘计算机的网络潜能,将能够大大提高我们对计算机的本身
28、的认识,同时也能加深对计算机网络的认识。(2)网络的一大应用就是用于用户之间联络的聊天工具,通过对聊天工具的开发,我们将了解计算机如何通过网络相互通信以及在此相互通信的基础上实现的应用程序级的协议。(3)C/S结构的优势在不依赖于浏览器,可以在任何操作系统中运行。而且客户端也可以进行复杂的业务逻辑。这些都是B/S系统所无法达到的。2.4 系统方案说明 网络聊天室涉及的一个服务器端和N个客户端。客户向服务器发送请求,服务器对请求作出响应。客户尝试与服务器建立连接。一旦连接建立起来,客户和服务器就可以通过套节字进行通信。本系统中,主要有两个应用程序,分别为服务器程序和客户端程序。用程序主要用于消息
29、转发、客户登陆信息的管理以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。本系统采用C/S(Client/Server)体系结构(见图2-1),即客户机/服务器体系结构。其特点是客户端只装载应用软件,而把复杂的消息处理、用户监控等放在服务器端实现,这样就可以大大简化客户端软件。ServerClientClientClientClient图2-1 C/S体系结构图其大致实现模型是:(1)服务器分配一个端口号。一旦服务器启动,既使用ListenThread线程对端口进行不间断监听.如果客户请求一个连接,服务器使用accept()方法打开一个socket连接。(2)客
30、户在host和port端口建立连接。(3)服务器和客户端使用InputStream和OutputStream进行通信。2.5 系统其他要求2.5.1 系统性能要求(1)时间特性对于公共聊天和聊天室聊天,要求响应每条消息的时间不超过1秒钟,否则用户将感到这个聊天工具反应迟钝。对于二人文本私聊,要求响应每条消息的时间不超过500ms,这样使得二人私聊能够有种当面聊天的感觉。(2)灵活性要求该聊天工具能够适用于多种协议上,而且能够在任意个自治系统之内使用,要求服务器自建非常灵活。2.5.2系统环境要求(1)硬件要求:安装了网卡,并连入局域网。(2) 软件要求: Windows98以上的系统;安装了支
31、持Socket通信的TCP/IP或者协议;JDK1.4以上版本。2.6结构流程2.6.1 服务器结构流程图服务器启动处于监听状态客户端登录处理 群聊 请求客户端下线服务器退出处理 表情 请求处理 私聊 请求图2-2 服务器结构流程图2.6.2客户端结构流程图客户端启动客户端退出发送 私聊 请求发送 聊天 请求发送 表情 请求 图2-3 客户端结构流图第三章 程序详细设计网络聊天室涉及的一个服务器端和N个客户端。客户向服务器发送请求,服务器对请求作出响应。客户尝试与服务器建立连接。一旦连接建立起来,客户和服务器就可以通过套节字进行通信。3.1 聊天室服务器端设计服务器端是整个聊天室的主要部分,它
32、包含了客户端接入以及处理其发出请求的一系列方法,是整个聊天是的核心,客户发送的信息也是通过服务器发送到其他用户的。3.1.2 服务器设计思想作为服务器设计,需要考虑以下几点问题:(1)安全性服务器的安全性包括两部分,一是服务器本身软硬件配置上的安全性,比如防止系统漏洞;二是服务器和客户端通讯协议的安全性设计,防止通过协议本身导致服务器被非法攻击等。(2)并发服务能力主要是线程间的锁控制。涉及到锁控制的,主要是因为共享问题。共享分为两种:一是代码共享部分;一是数据共享部分。其中做主要的还是数据共享部分。但是没有什么好的解决办法,唯一的办法就是检查这个共享是不是真正必要的,这些数据可不可以分成两部
33、分以形成不是共享的。(3)性能的可线性提高这主要指服务器的服务能力可以通过增加线程的方式线性提高性能。这就要求服务器的服务能力分担是均衡的,即实现良好的负载平衡。3.1.2 服务器端界面图3-1服务器端界面3.1.3.服务器端各主要类的定义及其功能ChatServer:这个类是服务器端程序运行的入口,运用Swing图形界面定义了服务器的主界面,其中包含一个主窗体、若干个容器、按钮、输入框和文本显式框。jbInit()方法是使整个图形界面初始化。同时还有startServer()和stopServer()两个方法,当运行startServer()这个方法时就会创建个ServerSocket对象并
34、设定8000端口号。运行stopServer()方法会关闭ServerSocket断开连接,请离用户的KickOut发法也定义在这个方法中。Node:此类为用户节点类,其对象实例用户唯一标识一个用户,只有属性没有方法,并创建了一个自身的引用。ServerListenThread:这个类继承了Thread线程类,主要的方法也是重写父类的main()方法。方法中定义了个while循环让ServerSocket一直处于监听状态,直到boolnean类型的isstop为false时,也就是服务器关闭是退出。并控制输入输出流来显式上线下线的信息发送到每个客户端。UserInfoList:这个类是针对No
35、de类也就是定义的用户进行操作,其中有增加用户的add()方法、删除用户的del()方法、指定id或name的两个Find()方法以及获所有用户数的getCount()方法。SendMessageToAll:这个类用于向所有客户端发送信息,实现方法是sendMsgToAll,它有两个参数,一个是用户UserInfoList,和要发送的消息M。通过输入输出流来控制并通过网络传输的。ServerReceiveThread:它继承了Thread线程类,用于获取客户端发来的信息并作适当的处理,在向客户端发送消息之前对要发的消息进行适当的加工。如客户端发出悄悄话请求时,这个类会调用方法在所发送的消息前加
36、上“悄悄对你说”。3.1.4.服务器端用户管理功能的设计与实现 由于客户端承载着与客户端之间和客户端相互之间交流的重要任务,所有对所有用户端进行管理功能的实现很重要。在这个功能中是通过定义Node和UserInfoList这两个类来实现的当服务器端接到一个客户端的请求时,服务器端就会初始化一个Node节点作为客户端,Node类中出了有起必须的一些用户名、输入输出流等属性外,还定义了其自身的引用Node next,作用是把客户端设计成一个链表,通过next这个属性让他们连接起来,这样做的优点是不需要再定义List或者Map来存放客户端结点,只需在Node中增加一个属性就能实现,使其性能有很大的提
37、高。UserInfoList中定义了对Node进行增加、删除、查找和返回其数目的方法,通过Node的next属性遍历所有的客户端。在整个的聊天室实现中客户端管理模块起到了基础的支持,无论是发送消息、上线下线和悄悄话都是调用UserInfoList中的方法来确定对哪个客户端进行操作的。Node对象是存放在内存中的,当ServerSocket关闭的时候会释放资源,Node结点失效。3.1.5.服务器端显示消息的功能设计与实现 服务器端作为所有消息的中转站和系统消息发出站,对消下的处理也是相当重要的一个环节,如果失去了消息发送消息的功能,聊天室也就是去了存在的意义。首先在客户Node类中定义了两个属
38、性,分别是ObjectOutputStream和ObjectInputStream,这是java语言的输入输出流,应用于所有信息的传递,可以输入输出对象、数据、字符串等等。首先ServerListenerThread会捕获到客户端的请求,然后引用Node类并调用OutputStream方法发送消息。Server ReceiveThread会接收到请求并判断是何种类型,是群聊还是悄悄话,是什么样的表情,服务器会对其进行加工,加上所需要的提示信息和用户名,如果是群聊,则调用SendMessage中的SendMsgToAll发送到每一个客户端。期间会调用UserInfoList来获取所有用户。客户端
39、获得消息后调用服务器中定义的Node类中的OutputStream将接收并显示到图形界面中的文本输出框,群聊功能就实现了。如果是私聊,UserInfoList会根据用户名查找是哪个用户,再调用SendMessage方法将消息发送到指定客户端。如果是服务器端发送消息则会在发送之前加入“系统消息”后再调用SendMessageToAll方法发送到每个客户端。客户端程序通过输入流获取到信息后进行判断并作相应的处理。在字符串前面加上适当的说明信息之后条用textarea.append()方法将信息输出到主界面上。3.2.聊天室客户端设计 客户端中定义了客户的主界面以及发送消息、接收消息等方法。它继承了
40、Thread线程类,因而多个客户端可以并发执行且不受影响。3.2.1.客户端设计思想 服务器的作用就是为了满足客户端的要求。客户端作为大众群体,地位也是非常重要,其权限没有服务器高。在客户端的设计中只需加入客户端住界面和接收发送信息的线程以及一些对基本字符串的处理,其他复杂的功能由服务器完成。3.2.2.客户端界面图3-2 客户端界面3.2.3.客户端各主要类的定义及其功能ChatClient:客户端的主函数就在这个类中。login方法是用于用户登录的,不需要事先注册,用户名不为空即可登录。之外还有logout下线以及发送信息的方法。客户端的主界面的初始化写在jbinit方法中,和服务器端界面
41、类似,它由一个panel和若干个按钮和textArea组成,这些Swing组件与服务器端的监听器相连。3.2.4.客户端登陆的设计与实现 本程序登录是不需要验证的,如果用户不是系统的提示信息或者已存在的用户名则登录成功。登录功能中首先实例化一个Socket,传入本机的IP地址和要连接服务器的端口号服务器建立连接,如服务器未开启则抛出异常并在主界面的文本框中显式。然后从socket对象获取输入流,实例化用户线程并启用。3.2.5.客户端发送消息的设计与实现发送消息是由SendMessage方法来完成的。该方法首先获得要发送的内容和对象。如果是悄悄化则加上status字符串。然后把提示信息、聊天的
42、对象、聊天方式、表情和聊天内容依次通过输出流发送给服务器端,发送一条清空一次缓存,服务器端会根据接收到的内容作相应的处理。3.2.6.客户端显示收到消息的设计与实现 在接收消息模块中定义了一个while循化,只要用户没有下线或与服务器的连接没有断开则消息一直处于接收状态。当输入流读取到服务器发送的消息后用if条件语句判断是何种类型的信息,并对其做加上相应的类型提示信息的处理。最后送交主界面的textArea进行显示。第四章 系统测试4.1 测试目标各模块整合良好,功能能够正常使用。客户端与服务器端的通信正常,不会出现漏发、错发、乱码等问题。客户端登录的用户名不会出现重复且不能为空。用户下线则断
43、开于服务器的连接,不会占用网络资源。悄悄话功能能够正常使用,只有悄悄话的对象和服务器能够看到其内容。服务器断开连接或连接以外中断是当时能够将正确的提示信息显示到客户端,不会造成死机或其他异常情况。4.2 测试过程4.2.1 服务器测试(1)服务器开启图4-1 服务器开启(2)显示群聊信息图4-2 显示群聊信息(3)显示私聊信息图4-3 显示私聊信息(4)请离用户图4-4 请离用户(5)关闭连接图4-5 关闭连接4.2.2 客户端测试(1)用户登录图4-6 用户登录(2)发送、接收消息图4-7 客户端发送接收消息(3)私聊图4-8 私聊(4)客户端下线图4-9 客户端下线4.3 测试结果网络条件
44、正常的情况下服务器与客户端可以建立连接。客户端能够正常登录。群聊和悄悄话功能正常实现且能够及时的发送信息,响应时间小于500ms。各提示信息准确无误。服务器断开连接时客户端能够及时响应且没有发生异常。结 论该项目从设计、规划、编码、运行到测试已经完成所有的研究项目。整个研究开发过程中,是一个不断摸索不断创新的过程。其开发过程大致可以分为一下三个大的阶段:第一个阶段是该软件的计划,分析和调研阶段,在这个阶段里,大致的学习了相关的技术,分析了相关的聊天软件的性能和功能。第二阶段就是软件的设计与实现。在这过程中,开始是该软件的需求分析与初步设计以及实现阶段,这是该软件的第一个模型。然后是对软件的结构
45、进行改进的阶段,这是该软件的第二个模型。经过一段时间的测试对界面做了改进。可以说该软件的总体开发模式采用原型演化的开发模型。现在该项目已经基本上完成了所有的要求,还扩展了一些功能。第三个阶段是软件的测试和文档整理阶段,完成了对软件的所有的功能的测试,并且对软件系统做详细的说明,认真完成好论文。本系统是典型的C/S架构,它的优点是大部分功能由服务器完成,客户端简单易维护,这样做为用户就更容易接受。并且占用的系统资源少,提高了性能。缺点是聊天的内容没有储存,当清屏以后就无法再看到以前的聊天记录了。日后可以考虑增加日志的功能,把聊天记录及一些用户信息存储在.txt文件或者数据库中,使其有处可查。参考文献1、古凌岚、罗佳、张婵.Java程序设计.清华大学出版社.2005年3月2、OReilly . Socket Application. 2008年6月3、谭浩强、邵丽萍.Java语言实用教程2004年6月4、赵文靖编著.Java程序设计基础与上机指导.清华大学出版社,2006年6月5、乔治.唐森 An Easy Way to Develop Java Enterprise Applications 2008年6月6、Sun公司文档 Java Application Framework