java即时聊天系统.doc
《java即时聊天系统.doc》由会员分享,可在线阅读,更多相关《java即时聊天系统.doc(20页珍藏版)》请在沃文网上搜索。
1、课程设计答辩记录教师主要提问记录学生回答问题情况课程设计成绩评定答辩成绩(50%)课程设计报告撰写质量(50%)总分是否同意通过同意 不同意答辩小组成员签名: 年 月 日封面课程设计题目:即时聊天系统作者姓名:班 级:学 号:指导教师:日 期:2011年 5 月 日 作者签名:即时聊天系统 点对点,点对多点的网络聊天功能设计与实现摘 要本设计采用两层结构C/S模式,由客户端向服务器提出请求,服务器负责将客户端传过来的数据进行处理,并返回给客户端。本系统设计基于java的TCP Socket,服务端包含一个提供TCP连接服务的ServerSocket对象与一个参与通信的Socket对象,客户端只
2、包含一个参与通信的Socket对象。服务端通过继承Thread类,客户端通过实现Runnable接口分别实现了多线程程序设计,从而提高了系统性能和减少了系统开销。本系统的图形界面设计是通过java的AWT组件与Swing组件以及AWT组件event包中单击事件监听器接口(ActionListener)完成的。本系统实现了私聊、群聊功能,更新用户列表,上、下线提醒功能,脏话过滤功能,聊天快捷模板功能,登录验证功能(登录名不能为空)。关键词:C/S模式;java TCP Socket;多线程程序设计;java图形界面设计;私聊;群聊;更新用户列表;上、下线提醒;脏话过滤;聊天快捷模板;登录验证 即
3、时聊天系统共 16 页目 录1 引言11.1 课题背景11.2 课题现状11.3 本文主要工作12 即时聊天系统需求分析与开发工具22.1 系统目标22.2 系统要求的基本功能2 2.3 开发环境与工具-22.3.1 开发环境22.3.2 JAVA TCPSOCKET概述22.3.3 ECLIPSE3.6开发平台简介23 系统总体设计23.1 C/S模型23.2 JAVA TCPSOCKET通信流程描述33.2.1 C/S两端通过Socket机制进行连接-33.2.2 具体流程描述-43.3 多线程编程技术43.3.1 进程及线程概述43.3.2 JAVA对多线程编程的支持54 系统流程与实现
4、64.1 服务器模块详细设计64.2 客户端模块详细设计84.3 MESSAGEBEAN详细设计105 系统测试与分析11结 论16参考文献161 引言1.1 课题背景近年来,随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。这些在企业内部原有局域网设计之初未曾考
5、虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。 为了解决上述矛盾,人们提出了许多方法。提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。 我在本文中将讨论一种基于Socket的局域网通信工具的设计与实现方法。基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成
6、本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。 基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。1.2 课题现状 基于局域网的即时通信工具,实际上是互联网即时通信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用UDP或者 TCP协议体系来实现 ,开发技术已经比较成熟,比如较早的ICQ,MSN Messang
7、er,Yahoo 通这些国外开发的产品,还有国产的有名的QQ,新浪UC,LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等。而QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。这些软件,在使用方面各有特色,在实现方面也各有所长,但基于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者U
8、DP/IP协议的软件产品。1.3 本文主要工作本文主要工作是设计一个可以跨平台的局域网即时聊天工具,然后阐述本软件的功能、特点及使用方法,并详细阐述开发本软件所用的相关技术,具体分析本软件的各个模块的功能及实现方法,说明本软件的设计思想及方法。2 即时聊天系统需求分析与开发工具2.1 系统目标简单的及时聊天系统的实现(窗体程序实现),通过TCP协议,实现点对点,点对多点的网络聊天功能。 2.2 系统要求的基本功能 (1)实现点对点,点对多点的网络聊天,是本程序需要实现的最基本的功能。 (2)在线用户主机名列表的更新维护。 (3)上、下线提醒;脏话过滤;聊天快捷模板;登录验证;设置字体及文本背景
9、。 2.3 开发环境及工具2.3.1 开发环境 (1) 硬件环境 处理器:英特尔 Pentium(奔腾) 双核 T4200 2.00GHz 内存:1 GB ( 镁光 DDR3 1067MHz ) 网络:局域网。 (2) 软件环境 考虑到本人对Windows XP系统最为熟悉,故选择Windows XP平台。因Eclipse具有友好的集成开发界面、面向对象的可视化开发模式、良好的数据库及多媒体应用支持以及高效的软件开发与程序运行,功能更大,开发效率更高,不仅是网络环境下的优秀前端开发语言和工具,也是服务器端Web编程的优秀工具。操作系统:Windows XP或Linux。 开发工具:Eclips
10、e3.6。 2.3.2 Java TCPSocket概述Java的TCP Socket,服务端包含一个提供TCP连接服务的ServerSocket对象与一个参与通信的Socket对象,客户端只包含一个参与通信的Socket对象。 2.3.3 Eclipse3.6开发平台简介 开发平台我选用了Eclipse,因为一直以来都使用Eclipse进行学习,对这个IDE最为熟悉,再者Eclipse具有非常强大的功能,调试和运行java程序非常的方便,所以选择了Eclipse。3 系统总体设计3.1 C/S模型 在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方案中客
11、户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的地址提出了连接请求。在这个时刻,服务程序被唤醒并且为客户提供服务对客户的请求作出适当的反应。通常的通信工具,都采用客户机/服务器(C/S)体系结构,C/S结构是这样的一种结构:它包括一个客户机(或前端),一个服务器(或称后端),客户机的作用是访问和处理远程服务器上的数据,服务器的作用是接收和处理客户机的数据请求。有时,可能有多个客户向同一个服务器同时请求服务,这就需要服务器决定怎样处理这些请求。Client/Server结构最大的优点是将计算机工作任
12、务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。Client/Server模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。如下图所示:图3-1客户机服务器通信结构示图 3.2 Java TCPSocket通信流程描述3.2.1 C/S两端通过Socket机制进行连接 (1) 客户端的编程流程: a创建Socket对象,向Server的监听端口请求; b通过向新Socket中读写数据与Server端通信; c关闭Sock
13、et,结束与Server端; (2)服务器端的编程流程:1打开Server Socket,创建一个服务器型套接字和一个普通套接字,服务器型套接字在指 定端口为客户端请求的Socket 服务;2 等待来自客户端的Client端的请求; 3接收Client端的请求,用返回的Socket建立连接; 4通过向Socket中读写数据来与Client端通信; 5关闭Socket,结束与当前Client端的通信; 6关闭SerketSocket对象结束监听服务。3.2.2 具体流程描述如下图所示: 服务端ServerSocket(port)创建ServerSocket对象,提供TCP连接服务 客户端Sock
14、et(host,port)创建Socket对象向指定主机端口发连接请求accept()在指定端口等待客户端连接请求 申请连接连接成功获得一个已连接的Socket对象 建立Socket连接InputStream读取Socket对象的输入流InputStream读取Socket对象输入流 通过流传数据OutputStream写入Socket对象的输出流OutputStream写入Socket对象输出流Socket.close()关闭TCP连接Socket.close()关闭TCP连接ServerSocket.close()停止提供TCP连接服务 图3-2 TCP Socket流程描述图3.3 多线
15、程编程技术3.3.1 进程及线程概述进程和线程都是操作系统的概念。进程是应用程序的执行实例,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。线程是进程内部的一个执行单元。系统创建好进程后,实际上就启动执行了该进程的主执行线程,主执行线程终止了,进程也就随之终止。每一个进程至少有一个主执行线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变
16、量和系统资源,所以线程间的通讯非常方便,多线程技术的应用也较为广泛。多线程可以实现并行处理,避免了某项任务长时间占用CPU时间。要说明的一点是,目前大多数的计算机都是单处理器(CPU)的,为了运行所有这些线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换方式向线程提供时间片,这就给人一种假象,好象这些线程都在同时运行。3.3.2 java对多线程编程的支持 Java对多线程的支持是非常强大的,他屏蔽掉了许多的技术细节,让我们可以轻松的开发多线程的应用程序。Java里面实现多线程,有2个方法 1 继承 Thread类class MyThread extends Thread publ
17、ic void run() / 这里写上线程的内容 public static void main(String args) / 使用这个方法启动一个线程 new MyThread().start(); 2 实现 Runnable接口class MyThread implements Runnable public void run() / 这里写上线程的内容 public static void main(String args) / 使用这个方法启动一个线程 new Thread(new MyThread().start(); 3.4 用户界面设计在能够完全满足软件所需功能,设计界面要清爽
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 即时 聊天 系统