1、 1 毕业设计 设计题目: 学生姓名: 学院名称: 专业名称: 班级名称: 学 号: 指导教师: 教师职称 : 学 历: 2 目 录 1 前言 . 5 1.1 课题选题背景 . 5 1.2 需求分析 . 5 1.3 系统设计的要点 . 6 2 涉及的相关技术及协议 . 6 2.1 Java 语言 . 6 2.2 C/S 模式介绍 . 7 3 系统需求分析 . 8 3.1 可行性分析 . 8 3.2 系统功能需求 . 8 3.3 系统性能需求 . 9 3.4 即时信息加密和鉴别 . 9 3.5 即时通讯系统需求 . 9 4 系统设计 . 10 4.1 即时聊天系统的实施原理 . 10 4.2 软
2、件设计流程 . 11 4.3 功能模块划分 . 12 4.4 数据库概要设计 . 13 5 详细设计 . 13 5.1 服务器端的设计与实现 . 13 5.1.2 主服务器类的设计 . 13 5.1.2 登录验证模块 . 15 5.1.3 注册处理模块 . 16 5.2 客户端的设计与实现 . 16 5.2.1 用户注册模块 . 16 5.2.2 用户登录 . 18 5.2.3 在线用户显示设计 . 19 5.2.4 聊天信息发送与接收 . 20 5.3 数据库设计 . 21 6 结论 . 22 致谢 . 22 3 参考文献 . 24 附录 . 25 4 基于 Java 即时聊天系统的设计与实
3、现 摘要 : 网络 络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有 Netmeeting、腾讯 QQ、 MSN-Messager 等等。该系统开发主要包括一个网络聊天服务 器程序和一个网络聊天客户程序两个方面。前者通过 Socket 套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承 Thread 类来建立多线程。开发中利用了计算机网络编程的基本理论知识 ,如 TCP/IP 协议、客户端 /服务器
4、端模式( Client/Server 模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的 软件工程的方法。经过分析这些情况,该聊天工具采用Eclipse为基本开发环境和 java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统 关键词 : 即时通讯系统 B/S C/S MySQL Socket Swing Abstract: The rapid development of computer network technology today, m
5、ore immediate means of communication by people of all ages. Real-time chat tool in achieving the transmission of video and audio information, so that members can collaborate remotely intuitive, real audio and visual communication at the same time, use of multimedia technology, it can also help users
6、 to work in all kinds of information processing. Study of this issue is to support the exchange of internal network systems - network instant messaging system. The system uses Java programming language. System uses the C / S structure mode, support for LAN and Internet. The system uses the waterfall
7、 model of software development projects were discussed system requirements analysis, outline design, detailed design and coding, and run and test the whole system. Finally, the paper concluded. Keywords: Instant Messager; System; B/S C/S MYSQL Socket Swing 5 1 前言 目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯 QQ、新
8、浪 UC、网易泡泡等,国外有著名的 MSN(新版改名为 Live Messenger)以及跨平台 Gaim 等。本人取最具代表性的 QQ 和 MSN 进行了一些研究,作为我开发聊天系统的准备。 1.1 课题选题背景 随着计算机网络技术的发展,网络聊天工具已经成为人们日常交流的一种重要工具。它通信速度快,成本低,更重要的是方便人们信息的交流和资料的传递,所以开 发一个易于操作并拥有友好界面的聊天工具可以较好地解决现实生活中通信费用高昂以及电话的单线程通信等问题 1。QQ 聊天系统是一款基于互联网的即时通信系统,它允许人们利用英特网技术实时地传送信息 ,并且能让用户选择性地接受或拒绝其他用户的信息
9、。由于 QQ 有着出色的通信性能并且其用户普及度较高,因此本课题在模仿 QQ 的前提下,设计了一款具有聊天功能及其他附加功能的软件 目前即时聊天系统种类众多,功能也较为齐全。该课题现在所研究的即时通讯系统,其目标是定位于企业内部网络,解决企业或单位的沟通及协同的问题,提高工作效率。企 业内部员工可以利用该通讯系统随时随地发送文字消息、进行多人群聊、消息群发、传送文件、音频视频对话等。系统包括客户端程序和服务器端程序,支持局域网和 Internet。企业内部员工之间可以在内部网覆盖的任何地点、任何时间进行即时交流,真正实现企业内部协同工作。使您不必花费大量的时间、金钱聚集到一个地方,通过网络,就
10、能实现面对面的沟通,提高了效率。 MSN、 QQ 等公共消息系统,由于聊天对象及内容的不可控,若在企业内部使用,可能会降低工作效率。而该即时通讯系统将自己的服务器端安装在企业内,并且人员的创建是由系统管理员 来完成,因此很好的解决了这个问题。 随着计算机网络技术的发展,网络聊天工具已经成为人们日常交流的一种重要工具。它通信速度快,成本低,更重要的是方便人们信息的交流和资料的传递,所以开发一个易于操作并拥有友好界面的聊天工具可以较好地解决现实生活中通信费用高昂以及电话的单线程通信等问题 1。 QQ 聊天系统是一款基于互联网的即时通信系统,它允许人们利用英特网技术实时地传送信息 ,并且能让用户选择
11、性地接受或拒绝其他用户的信息。由于 QQ 有着出色的通信性能并且其用户普及度较高,因此本课题在模仿 QQ 的前提下,设计了一款具有聊天 功能及其他附加功能的软件 1.2 需求分析 聊天系统最重要的是服务器端和客户端两个方面。服务器端有两个主要任务: (1)服务器端应当建立一个 ServerSocket,并且不断进行监听,判断是否有客户端连接请求或断开连 接。 6 (2)服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息给客户端。 客户端要完成的工作: (1)与服务器端建立通信通道 ,向服务器端发送信息。 (2)接收来自服务器的应答信息。 解决了上述的 4
12、 个问题,也就完成了聊天系统的核心任务。 1.3 系统设计要点 聊天系统的设计主要是提供满足用户双方直接进行实时聊天的服务,在设计聊天系统的过程中,必须要考虑好以下几个设计要点: (1)实现思想 在 Internet 上的聊天程序一般都是以服务器提供服务端连接响应,用户通过客户端程序登录到特定服务器,即可与登录在同一服务器上的用户进行交流,这是一个面向连接的通信过程。因此,要在 TCP/IP 环境下 4-5,实现服务器端和客户端两部分程序。 (2)服务器端工作流程 服务器端通过 socket()系统创建一个 ServerSocket 来对客户端进行接收,并与指定的本地端口 绑定 bind(),
13、就可以在端口进行监听 listen()。 Map用以存储用户姓名和对应的 Socket。通过 ChatRoomServerThread 线程类来处理不同请求。如果有客户端连接请求,则给出一个相应的 Socket,将客户端地址赋给这个Socket。登录成功的用户就可以在服务器上聊天。 (3)客户端工作流程 客户端程序相对简单,只需要建立一个 Socket 与服务器端连接,成功后通过这个Socket 来发送和接收数据即可。 2 涉及的相关技术及协议 为了保证课题能正常实施,先来 分析一下课题所需要的相关技术和协议。 2.1 Java 语言 经过认真的讨论分析,综合各种计算机高级语言的特征和适应范围
14、,最终决定选择纯面向对象的 Java 语言来完成毕业论文的设计,下面就技术可行性方面,对 Java语言作一简要介绍。 7 Sun 公司的口号就是 “ 网络就是计算机 ” , Java 能使所有东西从桌面计算平稳的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任务而来的。使用 Java 语言,可以相对轻松的一天编写一个有条理的网络程序。今天, Java 的网络功能正在飞跃发展,不断有新的特性增加到这个有价值 的基础上, JavaSoft 实验室正在不断努力使 Java 更加完善。就 Java 语言的主要特点,本人归纳如下: Java 程序设计的开发过程与运行环境 Java 是解
15、释型的高级编程语言,所以 Java程序的开发通常需要经过编写源程序、编译生成字节码和运行三个过程。这里要提到,Java 应用程序的开发周期包括编译、下载、解释和执行几个部分。 Java 编译程序将 Java源程序翻译为 JVM 可执行代码 字节码。这一编译过程同 C/C+的编译有些不同。当C 编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此, 在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。 Java 编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释
16、器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了 Java 的可移植性和安全性。 【 2】 2.2 C/S 模式介绍 20 世纪 90 年代出现并迅速占据主导地位的一种计算模式为客户机 /服务器模式,简称为 C/S 模式,它实际上就是把主机 终端模式中原来全部集中在主机部分的 任务一分为二,保留在主机上的部分负责集中处理和汇总运算,成为服务器;而下放到终端的部分负责为用户提供友好的交互界面,称为客户机。 【 3】 相对于以前的模式, C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位:一般在运算能力较强的
17、计算机上安装服务器端程序,而在一般的 PC 上安装客户机程序。正是由于个人 PC 机的出现使客户机 /服务器模式成为可能,因为 PC 机具有一定的运算能力,用它代替了上面第一种模式的哑终端后,就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机 的负担,也增加了系统对用户的响应速度和响应能力。 客户机和服务器之间通过相应的网络协议来进行通讯。客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。这种模式的优点充分利用了客户机的性能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此物理上在客户机和服
18、务器两端是易于扩充的。 C/S 模式是目前占主流的网络计算模式。 该模式在操作过程中采取的是主动请示方式: 8 首先服务器方要先启动,并根据请示提供相应服务(过程如下): (1)打开一个通信通道同时通知本地主机,服务器愿意在某一个公认地址上接收客户请求。 (2)等待某个客户请求到达该端口。 (3)接收到重复服务请求,处理该请求并发送应答信号。 (4)返回第二步,等待另一客户请求。 (5)关闭该服务器。 客户端: (1)打开一个通信通道,并连接到服务器所在主机的特定端口。 (2)向服务器发送服务请求报文,等待并接收应答;继续提出请求。 (3)请求结束后关闭通信通道并终止。 分布运算和分布管理是客
19、户机 /服务器模式的特点。最后选择了 C/S 模式。 3 系统需求分析 前面两章介绍了课题 的选题背景和相关的技术基础和协议。在本章中将讨论一下即时通讯系统的需求分析。 3.1 可行性分析 经济可行性 :由于本系统的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行 Java 软件的电脑便可,所以不用考虑到经济问题。 技术可行性 : 本系统的开发利用 Microsoft SQL Server2000 作为本系统的数据库 ,它是一个支持多用户的新型数据库 ,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务
20、器 /客户端的结构提 供了硬件的支持。使用 Java 作为系统开发的开发环境 ,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型 ,给开发高性能系统提供的保障为开发满足客户要求的系统 ,保证了代码的模块化要求 ,而代码模块化的提高 ,非常有利于以后对新系统的扩展与修改。 运行可行性 : 本系统为一个小型的局域网聊天系统 ,所耗费的资源非常的小 ,现在一般的电脑无论是硬件还是软件都能够满足条件 ,因此 ,本系统在运行上是可行的。 综上所述 ,本系统的设计与开发在技术上和硬件设备上的条件都是满足的 ,因此 ,它在技术上是可行的。 3.2 系统功能需 求 9 本系统主要通过客户端,服务器端来
21、体现聊天系统的基本功能。 ( 1)服务器端 1.处理用户注册 2.处理用户登录 3.处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容 4.处理用户得到信息 5.处理用户退出 6. 服务器踢人。 7. 保存服务器日志 . 8.保存用户聊天信息。 (2)客户端 1.用户注册界面及结果 2.用户登录界面及结果 3.用户发送信息界面及结果 4.用户得到信息界面及结果 5.用户退出 界面及结果 3.3 即时消息的安全需求 A 发送即时消息 M 给 B,有以下几种情况和相关需求: (1)如果无法发送, A 必须接到确认; (2)如果 M 被投递了, B 只能接受 M 一次; (3)协议必须为 B
22、提供方法检查 A 发送了这条信息; (4)协议必须允许 B 使用另一条即时信息,回复信息; (5)协议必须为 A 提供方法保证没有其他个体 C 可以篡改 M; 3.4 即时信息加密和鉴别 (1)协议必须提供方法保证通知和即时消息的置信度,未被监听或者破坏; (2)协议必须提供方法保证通知和即时消息的置信度,未被重排序或者回放; (3)协议 必须提供方法保证通知和即时消息被正确的实体阅读; (4)协议必须允许客户自己使用方法确保信息的不被截获,不被重放和解密。 3.5 即时通讯系统需求 3.5.1 注册需求 (1)即时通讯系统拥有多个账户,允许多个用户注册; 10 (2)一个用户可以注册多个 I
23、D; (3)注册所使用的帐号类型为字母 ID。 3.5.2 通讯需求 (1)用户可以传输文本消息; (2)用户可以传输 RTF 格式消息; (3)用户可以加密 /解密消息等。 4 系统 设计 在这里我们将该即时通讯系统命名为 CHAT,现在对该系统进行总体设计。采用客户机 /服务器( C/S)的模式来设计,是一个 2 层的 C/S 结构:应用程序服务器 应用程序客户端,其分层机构如图 1 所示 。 图 1 2 层 C/S 结构示意图 客户层也叫做应用表示层,也就是我们说的客户端,这是应用程序的用户接口部分。给即时通讯工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它
24、用于检查用户的输入数据,显示应用的输出数据。为了使用户能直接地进行操作,客户层需要使用图形用户接口。若通讯用户变更,系统只需要改写显示控制和数据检查程序就可以了,而不会影响其他两层。 服务层又叫 做功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,用户需要检查数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。 4.1 即时聊天系统的实施原理 4.1.1 工作方式和技术原理 典型的 IM 工作方式如下:登陆 CHAT 通讯服务器,获取一个自建立的历史的交