JAVA聊天室系统的设计与实现_第1页
JAVA聊天室系统的设计与实现_第2页
JAVA聊天室系统的设计与实现_第3页
JAVA聊天室系统的设计与实现_第4页
JAVA聊天室系统的设计与实现_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、摘摘 要要 随着时代的发展,时间、信息两个概念显得越来越突出。在第一时间 掌握第一手资料,是打败对手取得成功的秘诀。伴随着计算机网络技术的 迅速发展,通信业也蒸蒸日上。现在个人电脑已普及到各个家庭、单位中。 为了能实时、准确地实现与朋友、亲人、同事之间的联系,网络聊天是一 种比较经济实惠的途径,其发展前景可观。 本系统利用 Java 中的 socket 网络编程和多线程技术实现。主要包括登 陆连接、服务器管理、客户聊天三大功能。管理员和用户经过登陆界面分 别进入到服务器端和客户端,客户通过 socket 连接服务器,服务器通过多 线程技术转发信息到其他客户端。这种服务器集中转发信息的优点是通信

2、 稳定,缺点是增加了服务器端的负担。 传统的面对面之间的交流由于受地域和时间的影响,已经满足不了当 今社会的需求。利用聊天室这种影响将会降到最小,人与人之间的交流将 会更加方便、快捷,可以大幅度提高人们的交流效率。 关键词:关键词:聊天室;Java;socket;多线程;C/S Abstract With the development and progress of the times, the concept of time and information become more and more outstanding. So, the winners will be the ones

3、who first grasp the firsthand data. As the internet technology is developing rapidly, the communications industry is also thriving. Personal computers are extensively spreading among all families and units. In order to communicate with family members, friends and workmates accurately but on real tim

4、e, chatting on net is one of the more economical and substantial ways, which has a favorable prospect. This system takes effect by socket network program of Java and multi- thread,It has three main functions of login, servers manage and chatting. The administrator and user log on server-side and cli

5、ent-side separately by the login box. The clients connect themselves to servers through the socket, then the servers send these messages to other clients by multi-thread. The advantage of forwarding informations centrally results in a stable communication, but its weakness leads to a burden to the s

6、erver-side. Traditional face-to-face communication is restricted by time and region, which can not meet the demands of modern society. Chatting room can reduce the influence above to the minimum, and the communication among people will be more convenient and quick, the intercourse efficiency is incr

7、eased greatly. Keywords: chatting room; java; socket; multi-thread; c/s 目目 录录 第 1 章 绪 论.1 1.1 论文背景及课题来源.1 1.2 本课题在国内外的发展状况.1 1.3 应解决的问题及系统开发意义.1 第 2 章 开发工具及相关技术介绍.3 2.1 JAVA与 SOCKET简介.3 2.2 JBUILDER5 介绍 .3 2.3 C/S 模型介绍.4 2.4 用 JAVA实现 SOCKET模型.5 2.5 JAVA中的线程模型简介.6 2.6 SQL SERVER 2000 简介.6 第 3 章 系统需求分

8、析.8 3.1 系统任务描述 .8 3.2 系统功能分析 .8 3.2.1 系统的功能需求.8 3.2.2 系统数据流图.9 3.2.3 系统数据分析.10 3.3 系统可行性分析 .11 第 4 章 系统设计.13 4.1 系统总体结构设计 .13 4.2 数据库设计 .14 4.3 系统功能模块详细设计 .15 第 5 章 编码与实现.18 5.1 系统主要模块代码 .18 5.1.1 启动、停止服务器.18 5.1.2 客户端连接服务器.19 5.1.3 聊天室发送信息.20 5.1.4 服务器转发信息.20 5.1.5 服务器显示在线用户人数.21 5.2 系统测试 .21 第 6 章

9、 结 论.25 参考文献.26 致 谢.27 附 录.28 附录 A 源程序主要代码.28 第第 1 章章 绪绪 论论 1.1 论文背景及课题来源论文背景及课题来源 随着网络技术的发展和普及,Internet 已经成为人们获取有关信息和相互交流的重 要途径之一,越来越多的机构和组织开始利用网络资源传递、发布、收集和管理信息。 这对各种类型的网络提供一次很大的挑战与机遇,特别是通过网络进行信息交互的这 种活动,更加使网络的经营方式充满了活力和机动性5。 基于 C/S 模型的 Java 聊天室是应用于网络交流领域的系统,它的主要特点有: 1通用性:聊天室系统在各种各样的网络中均可以运行,系统具有较

10、高的可移植 性和使用性; 2实用性:系统具有良好的人机界面,便于各类使用者操作,提供了人性化的服 务; 3及时性:通过网络的连接,系统双方的交流可以在短期内进行,相比与传统面 对面的交流节省不少时间15。 聊天室中聊天内容的及时性和准确性是极其重要的,它主要针对当今社会快节奏 生活,人们没有很多时间来等信息。本系统提供的功能便于系统使用双方的信息交流, 有效的提高了使用者的使用效率,缩短了使用者的使用时间6。 1.2 本课题在国内外的发展状况本课题在国内外的发展状况 随着网络技术的发展和普及,多数网站纷纷利用自己的网络资源建立聊天室,并 为客户提供各种各样便捷的服务。中国的一些龙头网站,如 s

11、ina,有很多聊天室,供 国内外的不同的人们进行不同话题的讨论,不仅将会员发展由国内延伸到国际,更是 为提高自身的知名度提供了方便2。 聊天室的开放性、信息资源的多样性可为网站发展提供优良的广告宣传和商品推 广,这是其他网站活动方式所无法比拟的,聊天室趋向方便化、快捷化是各大网站成 长的必然经历的阶段8。 1.3 应解决的问题及系统开发意义应解决的问题及系统开发意义 本系统针对聊天室用户的需要,建立了客户端和服务器端。主要解决的问题包括: 1服务器端和客户端要实现界面化,并且界面尽量人性化。 2服务器端能够正确的启动,并且时刻监视客户端,保持与客户端的连接。 3客户端能够快速准确的连接上服务器

12、端,发送的信息经服务器端可以转发给其 他客户。 4异常处理,对于用户的不正确的操作系统应该有提示。 基于 C/S 的 Java 聊天室系统它的开发意义在于为人们之间相互交流提供了一个快 捷、方便的应用平台。大型网站可以通过聊天室来提高自身的知名度,增加的访问流 量。 第第 2 章章 开发工具及相关技术介绍开发工具及相关技术介绍 2.1 Java 与与 Socket 简介简介 Java 语言是 Sun 公司于 1991 年创建的一种新的程序设计语言。该语言与 C/C+等 传统程序设计语言不同,具有突出的平台独立性,高度的可靠性和安全性特点。1999 年 6 月 SUN 公司重新定义了 Java

13、技术的结构,将 Java2 平台分为三个版本:标准版 (J2SE) ,企业版(J2EE)和微缩版(J2ME) 。目前,Java 技术除了沿着 J2SE,J2EE,J2ME 三种技术为主脉络迅速发展外,还密切关注 Internet 环境下各种新 型信息技术的发展,并能够迅速与这些新技术融合,积极支持这些新技术应用的开发1。 Socket 是 Java 中需要编写较低层次的网络通信程序(例如 Client/Server 应用程序) 时提供的一种通讯机制。Socket 是两个程序进行双向数据传输的网络通信的端点,一 般由一个地址加上一个端口号来标识。每个服务程序都在一个众所周知的端口上提供 服务,而

14、想使用服务的客户端程序则需要连接该端口。通过 Socket 的数据是原始字节 流信息,通信双方必须根据约定的协议对数据进行处理与解释15。 Socket 通信机制提供了两种通信方式:有连接方式(TCP)和无连接方式(UDP 数据报) 。有连接方式中,通信双方在开始时必须进行一次连接过程,建立一条通信链 路。通信链路提供了可靠的,全双工的字节流服务。无连接方式中,通信双方不存在 一个连接过程,一次网络 I/O 以一个数据报形式进行,而且每次网络 I/O 可以和不同主 机的不同进程进行。无连接方式开销小于有连接方式,但是所提供的数据传输服务不 可靠,不能保证数据报一定到达目的地14。 Java 的

15、有连接通信采用流式 I/O 模式。Socket 是两个进程间通信链的端点,每个 Socket 有两个流:一个输入流和一个输出流。只要向 Socket 的输出流写,一个进程就 可以通过网络连接向其他进程发送数据;同样,通过读 Socket 的输入流,就可以读取 传输来的数据9。有连接通信一般要经历以下四个基本步骤: 创建 Socket,建立连接; 打开连接到 Socket 的输入/输出流; 按照一定的协议对 Socket 进行读/写操作; 关闭 Socket。 第(3)步是程序员用来调用 Socket 和实现程序功能的关键步骤,其他三步在各种 程序中基本相同5。 2.2 JBuilder5 介绍

16、介绍 JBuilder5 是美国 Borland 公司最新推出的遵循 SUN 公司 J2EE 标准的集成开发工 具,是目前使用最广泛的 Java 开发工具之一。JBuilder 作为业界领先的 Java 开发工具, 在集成了 Tomcat 并支持 WebLogic 的同时,其套装版更是集成了 DreamweaverUltraDev,Rational Rose 等产品,JBuilder5 提供了可视化的集成开发工具, 支持开发人员向导极大地简化了开发人员的工作,使开发更为快捷,方便12。 JBuilder5 是一组全面的高效率工具,使用 Java 编程语言创建可伸缩的,高性能的 和具有不依赖于平

17、台性能的应用程序。由于可伸缩性和基于组件,JBuilder 可以开发所 有级别的应用工程,从 Apple 到连接企业级的,分布式的,多层解决方案的网络数据 库应用。JBuilder5 环境是用纯 Java 编写。任何 Java 编写的程序都可以在 JBuilder 上运 行、调试和工作3。 2.3 C/S 模型介绍模型介绍 C/S 是 Client/Server 的缩写,即客户机/服务器技术,也可以称为 C/S 模型。很显 然,C/S 技术有以下几个基本特点: 1C/S 技术一定包含两个部分,一个作为用户接口的前端,另一个作为共享资源 接口的后端。前端被称为客户端,后端被称为服务器端。客户进程

18、包含逻辑和提供用 户接口,服务进程充当一个管理共享资源的软件引擎,这些共享资源可以是数据库, 打印机,调制解调器和处理机等。 2前端与后端的任务对计算机资源有完全不同的要求,这些计算机资源包括:处 理机速度,内存,磁盘速度,容量,输入输出设备等。 3客户机与服务器由于可能基于完全不同的硬件和操作系统,所以它们之间的交 流可能完全通过一套标准的已定义的 API 与 RPC。 4可伸缩性是 C/S 系统的一个很重要特性。无论是水平伸缩还是垂直伸缩都有很 出色的表现。在这里,水平伸缩(Horizontal scaling)意味着方便地添加和删除客户工 作站。垂直伸缩(Vertical scaling

19、)意味着移植到一个更大更快速的服务器或多服务器 时,即服务的升级和集群都会比较方便4。 C/S 软件技术是一种通用的,基于消息的技术。在本论文中,我们这样描述 C/S, 网络上的一台计算机向网络上的另外一台计算机请求一个进程或数据,如图 1 所示。 服务器客户端 请求 网络 图 1 C/S 技术模型 Client/Server 结构的优点是速度快, 缺点是当 Server 进行更新时, Client 也必需更 新6。 2.4 用用 Java 实现实现 Socket 模型模型 首先,我们先介绍一下 Socket 的运行过程。通常在服务器的指定端口被绑定一个 Socket,此时服务器只是处于等待状

20、态,监听客户的连接请求。这个过程如图 2 所示。 服务器 客户端 监 听 端 口 连接请求 图 2 服务器监听客户的连接请求 服务器一旦接收到客户机的连接请求,服务器选择一个新的端口并绑定一个新的 Socket 与客户端建立的 Socket 对,这个过程如图 3 所示。 对客户机来说,连接请求被接受,客户端的 Socket 便被成功创建了,Socket 通信 便可以开始进行。由于 Server 端的输出流是服务端的输入流,Server 端的输入流是服 务器的输出流,反之亦然,所以,Client 与 Server 可以通过读写各自 Socket 进行交流。 响应 下面我们来看看在 Java 里对

21、 Socket 的运行过程实现。服务器使用 ServerSocket 类 来处理客户机的连接请求。当客户机连接到服务器所监听的端口时,ServerSocket 将分 监 听 端 口 服务器 客户端 连接请求 端口 图 3 服务器处理连接请求 配一个新的 Socket 对象。这个新的 Socket 对象将连接到一些新端口,负责处理与 之相对应客户机的通信。然后,服务器继续监听 ServerSocket,处理新的客户机连接。 13 客户机首先创建一个 Socket 对象,用于和服务器的通信。之后需创建两个对象: DataInputStream 和 PrintStream,前者用于从 Socket

22、的 InputStream 输入流中读取数据, 后者则用于向 Socket 的 OutputStream 的写数据11。 2.5 Java 中的线程模型简介中的线程模型简介 线程是程序中的一个执行流。一个执行流是由 CPU 运行程序代码并操纵程序的数 据所形成的。因此,线程被认为是以 CPU 为主体的行为。在 Java 中线程的模型就是一 个 CPU、程序代码和数据的封装体。Java 中的线程模型包含三部分。 (1)一个虚拟的 CPU。 (2)该 CPU 执行的代码。 (3)代码所操作的数据。 线程模型在 Java 中是由 Java.lang.Thread 类进行定义和描述的。程序中的线程都是

23、 Thread 的实例。因此用户可以通过创建 Thread 的实例或定义并创建 Thread 子类的实例 建立和控制自己的线程序7。 2.6 SQL SERVER 2000 简介简介 Sql Server 2000 是微软公司推出的新一代关系数据库管理系统,它继承了 Sql Server 7.0 版本的优点,同时又增加了许多新的功能,具有功能强大、使用方便、可伸 缩性强、与相关软件高度集成等特点。一经推出,就受到了专业人士的好评,目前已 经成为 web 数据库系统中较为常用的一个数据库系统。Sql Server 2000 可运行在 windows 98/NT/2000/XP 等多种操作系统下1

24、0。 Sql Server 2000 的重要管理工具: 1服务管理器 可以通过服务管理器启动、停止、暂停 Sql Server 服务器的相关服务。当操作服 务器中的数据时,应该首先确保该服务器正常启动了相应的服务13。 2企业管理器 企业管理器提供了一种图形化界面来操作数据库对象,在该界面中可以进行数据 库、表等数据对象的创建、查询、修改、删除等操作,可以完成 Sql Server 2000 中绝 大多数的管理工作。 3查询分析器 查询分析器是运行、测试用户的 Transact-sql 语句、批处理和脚本的场所。 Transact-sql(又称为 t-sql)是 Sql Server 2000

25、 在标准的 SQL 语句上进行了扩充的语言, 是交互式的结构化查询语言,能够完成对 Sql Server 2000 数据库的所有操作。 SQL(structured query language,结构化查询语言)起源于 IBM 的实验室,目前 SQL 语言 已经成为操作和检索关系数据库中数据的标准语言。在 ASP 中,只要访问数据库,就 必然会使用 SQL 语言。 第第 3 章章 系统需求分析系统需求分析 3.1 系统任务描述系统任务描述 本系统是采用 Java 基于 C/S 开发的聊天室。管理员在经过登录界面进入管理员界 面,即系统的服务器端并启动服务器后。此时,如果有用户登录会在服务器端显

26、示登 录用户的用户名和当前连接的用户人数,如果有用户聊天,服务器会显示出聊天信息。 管理员在管理界面中可以随时关闭服务器。此时,所有的客户端都将失去和服务器端 的连接,从而,用户所有的聊天信息发送将不成功。 用户只需要在登录界面中输入正确的用户名和密码即可登录聊天室并且连接上服 务器。在聊天室中,用户可以和聊天室中所有的用户发送信息,还可以接收所有用户 发送的信息,可以查看到当前服务器的状态。如果用户已经登录了聊天室,而服务器 还没有启动,则用户是不可以利用聊天室收发信息的。如果在运行过程中,服务器断 开则系统会有提示。 3.2 系统功能分析系统功能分析 3.2.1 系统的功能需求系统的功能需

27、求 聊天室程序通常需要完成以下一些基本功能: 登录聊天室; 启动服务器; 关闭服务器; 用户之间的聊天; 退出聊天室。 本系统具体功能需求如下: (1)聊天室管理员经登录界面登录到管理界面,即系统的服务器端。用户经登录 界面都进入聊天大厅。两类界面根据系统使用者的角色不同,登录界面也有所不同。 (2)不论是管理员还是用户都需要在登录界面输入正确的用户名和密码后才可以 登录到各自的界面中去。 (3)系统的两个主要界面都是为方便管理员和用户操作的。首先,管理员进入到 管理界面后可以方便的启动/停止服务器,看到在线用户的信息和聊天信息。用户进入 到聊天大厅中可以聊天,查看服务器状态。 (4)一个用户

28、退出聊天室对其他用户不能产生影响,而服务器断开与客户端的连 接则所有的用户都失去与服务器的连接。 (5)用户的聊天信息录入,重写,发送,接收方便,快捷。 (6)服务器状态,聊天信息和在线用户人数及时刷新。 (7)显著提高工作效率,减少人力、物力资源的投入。聊天室系统运行稳定、安 全性高、性能可靠。 3.2.2 系统数据流图系统数据流图. 系统的顶级数据流图如图 4 所示。 聊天室系统 管理员管理员 用户用户 启/停服务 器 发送信 息 用户信 息 接收信 息 图 4 系统顶级数据流图 管理员的操作经过聊天室系统将反馈给管理员自己和用户。情况 1:管理员启动服 务器,管理员界面将出现用户连接信息

29、和用户的聊天信息,用户在登录后可以进入到 聊天界面中。情况 2:管理员停止服务器,管理员界面中所有的用户信息都将不再刷新, 而用户所在聊天界面都将有服务器停止的提示。用户的操作经过聊天室系统将反馈给 用户(包括自己)和管理员。用户的用户名,聊天信息在管理员界面都可以显示出来。 用户的聊天信息可以在自己和其他用户的界面上显示。管理员界面二级数据流图: 登录界面 用户名, 密码核对 管理员界 面 启动/停止 服务器 查看在线 用户人数 查看用户 聊天信息 口令 核对 口令正 确 口令错误 图 5 管理员界面二级数据流图 我们也可以得到聊天室界面的二级数据流图: 图 6 聊天室界面二级数据流图 3.

30、2.3 系统数据分析系统数据分析 在仔细调查聊天室过程的基础上,总结出该系统需要满足以下系统数据的需求: 系统管理员资料。包括管理员用户名和管理员密码。 用户信息记录用户的资料。包括用户的用户名、登录密码、真实姓名、电话、传 真、所属地区。 聊天室系统总体 E-R 图如图 7 所示: 客户管理员 客户 管理 聊天管理 图 7 聊天室系统总体 E-R 图 聊天室系统管理员属性图如图 8 所示: 登录界面 用户名, 密码核对 聊天室 界面 发送聊天信息 接收聊天信息 查看连接状态 口令错误 口令 核对 口令 正确 管理员 管理员 密码 管理员 用户名 图 8 管理员属性图 聊天室系统客户个人资料属

31、性图如图 9 所示: 客户 用户名 传真 真实姓 名 电话 密码 地区 图 9 客户个人资料属性图 3.3 系统可行性分析系统可行性分析 从技术发面来看,Java 语言的优点主要表现在:简单、面向对象、多线程、安全 性等方面。 (1)简单性 Java 与 C+语言非常相近,但 Java 比 C+简单,它抛弃了 C+中的一些不是绝对 必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动 强迫同型。Java 实现了自动的垃圾收集,简化了内存管理的工作。这使程序设计更加 简便,同时减少了出错的可能。 (2)面向对象 Java 提供了简单的类机制和动态的构架模型。对象中封装了它的

32、状态变量和方法, 很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机 制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用, 又提供了一种动态的解决方案。 Java 是一种完全面向对象的程序设计语言,它除了数组、布尔和字符三个基本数 据类型外的其它类都是对象,它不再支持全局变量。在 Java 中,如果不创建新类就无 法创建程序,Java 程序在运行时必须先创建一个类的实例,然后才能提交运行。 Java 同样支持继承特性,Java 的类可以从其它类中继承行为,但 Java 只支持类的 单重继承,即每个类只能从一个类中继承。 Java 支持界面,界面允许

33、程序员定义方法但又不立即实现,一个类可以实现多个 界面,利用界面可以得到多重继承的许多优点而又没有多重继承的问题。 (3)多线程 多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中, 不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分, 这样容易实现网络上的实时交互操作。 Java 程序可以有多个执行线程,如可以让一个线程进行复杂的计算,而让另一个 线程与用户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多 线程保证了较高的执行效率5。 (4)安全性 用于网络、分布环境下的 Java 必须要防止病毒的入侵,Java 不支持指针,一切对

34、内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访 问对象的私有成员,同时也避免了指针操作中容易产生的错误。 从开发环境来看 ,JBuilder5 是一组全面高效率工具,使用 Java 编程语言创建可 伸缩的,高性能的和具有不依赖于平台性能的应用程序。JBuilder5 新增几个新功能, 并对已有的功能进行了改造,包括一个单步产品安装过程,以及自动卸载功能。其他 功能还有:对 JAVA 的支持,WEB 应用开发,Enterprise JavaBeans(EJB),JMS 和 EAR 向导,团队开发,编译器的增强功能,工程属性,配置 JDK,部署,IDE 的增强功能, 语

35、言的支持1。 从自身能力来看,本人在大学三年级时对 Java 语言进行过一个学期的系统学习, 对 Java 有一定的了解和掌握。虽然对 Java 的网络编程不是很熟悉,但是通过到图书馆 查阅书籍和网上收集资料,现在对 Java 网络编程有了一定的了解。 第第 4 章章 系统设计系统设计 系统设计是本系统开发的重要阶段,它直接影响到目标系统的质量,是整个开发 工作的核心。系统设计阶段的主要任务是:在系统分析提出的逻辑模型的基础上,科 学合理地进行物理模型设计。系统设计分为:总体设计和详细设计。总体设计包括子 系统的划分和模块设计,详细设计包括各模块的详细描述、输入输出设计等。 系统设计遵循的原则

36、是:系统性、适应性、稳健性、经济性。 4.1 系统总体结构设计系统总体结构设计 本系统是用 Java 语言基于 C/S 开发设计的,其核心的 Socket 技术决定了该系统的 安全性和稳定性,从而保证了本系统有较强的使用性。其最重要的功能就是实现了聊 天信息的快速性,改变了传统的面对面聊天信息不确定因素多,安全性低的状况。聊 天室设计图如图 10 所示。 服 务 器 客户代理 客户端 线程 用户名 用户 Socket 图 10 聊天室设计图 服务器使用多线程,每个线程对应一个客户端,但线程通过客户代理同客户端交流, 在客户代理中有两个重要信息:一个是用户名,一个是用户名对应的 Socket。客

37、户向 服务器请求连接后,客户代理的 Socket 字段便被实例化,当用户登录后,客户代理的 用户名字段被实例化,一个完整的客户代理生成了。对客户端来说用户名是可见的, 客户端提供对用户名的操作。对服务器端来说,Socket 是可见的,服务器通过用户名 操作 Socket,进而回应客户端的请求。 基于 C/S 的 Java 聊天室系统的作用是提供给人们一个平台进行相互交流,在交流 的过程中可能出现的情况也是不同的。因此,可将系统分成两大模块:服务器端模块 和客户端模块。系统功能模块图如图 11 所示: 基于 JAVA 实现聊天室 服务器端客户端 管 理 员 登 录 服 务 器 管 理 用 户 登

38、 录 聊 天 室 启 动, 停 止 服 务 器 当 前 连 接 人 数 用 户 聊 天 信 息 连 接 服 务 器 接 收 信 息 认 证 用 户 连 接 状 态 显 示 信 息 发 送 信 息 图 11 系统功能模块图 1服务器端模块介绍: 该模块分为管理员登录和服务器管理两个子模块。首先,管理员登录是指管理员 通过输入用户名和密码进入到管理员界面,即系统的服务器端。而服务器管理是指管 理员进入到服务器端界面后,对系统的服务器端所做的一些操作,如启动、停止服务 器,查看当前用户连接人数,和用户的聊天信息。 2、客户端模块介绍: 该模块分为用户登录和聊天室两个子模块。首先,用户登录是指用户通过

39、输入用 户名和密码进入到聊天室中,并且聊天室自动连接上服务器。聊天室模块是指系统聊 天室所具有的基本功能,如发送、接收信息,查看当前和服务器连接状态,显示发送 和接收的信息。 4.2 数据库设计数据库设计 本次数据库开发工具为 Microsoft SQL Server 2000,具体设计的表单如下: 表 1 用户信息表 字段名类型大小允许空备注 usernamenvarchar20否用户名 passwordnvarchar20否密码 Truenamenvarchar10是真实姓名 countrynvarchar16是所属地区 favnvarchar20是传真 telnvarchar20是电话

40、表 2 管理员信息表 字段名类型大小允许空备注 usernamenvarchar20否用户名 passwordnvarchar20否密码 4.3 系统功能模块详细设计系统功能模块详细设计 管理员登录模块流程图如图 12 所示: 开始 输入用户名与密码 查询数据库 是否有这条 记录? 进入管理员界面 提示用户名 或密码错误 结束 图 12 管理员登录模块流程图 下面对管理员登录程序流程图做简要叙述。首先,管理员在登录界面中输入管理 员用户名和密码,并向系统发送。系统在收到发送信息后查询数据库,如果在数据库 中存有相同的信息,则运行管理员界面。如果在数据库中没有相同信息,则系统提示 错误,并返回登

41、录界面。服务器管理模块流程图如图 13 所示: 管理员 身份验证 管理员界面 关闭服务器启动服务器查看在线用户人数 开始 结束 提示用户名 或密码错误 正确 错误 查看聊天信息 图 13 服务器管理模块流程图 开始 输入用户名与密码 查询数据库 是否有这条 记录? 进入聊天室界面 提示用户名 或密码错误 结束 服务器端 显示 下面对服务器管理程序流程图做简要叙述。首先,管理员通过登录界面进入到管 理员界面中。在此界面中可以实现对系统服务器的启动和关闭,查看在线用户人数和 用户的聊天信息。用户登录模块流程图如图 14 所示: 下面对用户登录程序流程图做简要叙述。首先,用户在登录界面中输入用户名和

42、 密码经过系统验证后进入到聊天室中,同时,如果服务器已经启动,系统自动将聊天 室连接上服务器,用户可以使用聊天室,并且在服务器端有用户登录的提示。如果服 务器没 有启动,则用户可以进入到聊天室,但是使用不了聊天室。聊天室模块流程图如图 15 所示。可以对聊天室程序流程图做这样的简要叙述:用户在登录界面中输入用户名和 密码进入到聊天室中。在此界面中用户可以实现向其他用户发送信息,接收其他用户 发送的信息,查看当前和服务器的连接状态。 图 15 聊天室模块流程图 图 14 用户登录模块流程图 用户 开始 结束 身份验证 聊天室 查看连接状态接收信息发送信息 提示用户名或 密码错误 正 确 错误 查

43、看聊天信息 第第 5 章章 编码与实现编码与实现 5.1 系统主要模块代码系统主要模块代码 5.1.1 启动、停止服务器启动、停止服务器 class Serverchat extends Thread public Serverchat() try intPort=Integer.parseInt(textPort); InetAddress host=InetAddress.getLocalHost(); localhost.setText(host.getHostName()+host.getHostAddress(); ss=new ServerSocket(intPort); ssLi

44、ve=ss.isBound(); display(服务器已启动!); catch(Exception e) display(服务器已关闭!); this.start(); public void run() while(true) try clientSk=ss.accept(); if(clientSk!=null) display(clientSk+join in ); catch(IOException e)display(无法监听!); int i=0; do Connect c=new Connect(clientSk); clients.addElement(c); if(chec

45、kName(c) activeConnects+; else toClient.println(TAKEN); disconnect(c); i+; break; while(iclients.size(); 5.1.2 客户端连接服务器客户端连接服务器 class Clientchat extends Thread public Clientchat() tryloginName=name.getText(); intPort=Integer.parseInt(port.getText(); ipAdd=new String(ip.getText(); sk=new Socket(ipAdd

46、,intPort); fromServer=newBufferedReader(new InputStreamReader(sk.getInputStream(); toServer=new PrintStream(sk.getOutputStream(); StringBuffer info=new StringBuffer(INFO:); String userInfo=loginName+:; toServer.println(info.append(userInfo); toServer.flush(); address=sk.getInetAddress(); skLive=sk.i

47、sConnected(); display(connect successfully!+address.getLocalHost(); catch(Exception e) display(connect failed!); this.start(); 5.1.3 聊天室发送信息聊天室发送信息 button2.addActionListener(new Java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) button2_actionPerformed(e); ); textField2.addKe

48、yListener(new textField2_KeyAdapter(this); panel2.add(label1); panel2.add(textField2); panel2.add(button2); 当客户在发送信息文本框中写好信息后,可以有两种发送方式,一种方法是点击 发送按钮,另一种方法在键盘上敲击“ENTER”。 5.1.4 服务器转发信息服务器转发信息 public void run() try while(true) for(int i=0;ichatClients.size();i+) comThread1=(CommunicateThread)chatClient

49、s.get(i); msgStack=comTrStack; ClientName=(String)ClientMsg.get(i); for(int j=0;j+string; broadcast(broadcastInfor); msgStack.removeAllElements(); try Thread.sleep(100); catch(InterruptedException ex) catch(Exception e) 首先,服务器端得到每个连接上的客户端信息栈,读取每个连接线程信息栈并把 信息发送出去。最后清除已发送的信息。 5.1.5 服务器显示在线用

50、户人数服务器显示在线用户人数 public void notifyRoom() StringBuffer people=new StringBuffer(PEOPLE); list.removeAll(); String constr=”当前在线人数为+ activeConnects”; connectTxt.setText(constr); for(int i=0;iclients.size();i+) Connect c=(Connect)clients.elementAt(i); list.add(); sendClients(people); 5.2 系统测试系统测试 首先,管理员在登录界面中输入用户名和密码进入到服务器端。 图 16 管理员登录界面 进入到服务器端后启动服务器。这时,系统可以显示出登录的用户人数和用户的 聊天信息。 图 17 系统服务器端 用户可以通

温馨提示

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

评论

0/150

提交评论