1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。基于JAVA实现聊天室 *( 巢湖学院 计算机科学与技术系, 安徽 巢湖 238000) 摘 要: 随着时代的发展, 时间、 信息两个概念显得越来越突出。在第一时间掌握第一手资料, 是打败对手取得成功的秘诀。伴随着计算机网络技术的迅速发展, 通信业也蒸蒸日上。现在个人电脑已普及到各个家庭、 单位中。为了能实时、 准确地实现与朋友、 亲人、 同事之间的联系, 网络聊天是一种比较经济实惠的途径, 其发展前景可观。本系统利用Java中的socket网络编程和多线程技术实现。主要包括登陆连接、 服务器管理、 客户聊天三大功能。管理员和用户经
2、过登陆界面分别进入到服务器端和客户端, 客户经过socket连接服务器, 服务器经过多线程技术转发信息到其它客户端。这种服务器集中转发信息的优点是通信稳定, 缺点是增加了服务器端的负担。传统的面对面之间的交流由于受地域和时间的影响, 已经满足不了当今社会的需求。利用聊天室这种影响将会降到最小, 人与人之间的交流将会更加方便、 快捷, 能够大幅度提高人们的交流效率。关键词: 聊天室; Java; socket; 多线程; C/S The Design and Implementation of ChatRoom Based on JAVA*( Department of Computer Sci
3、ence and Technology , ChaoHu College , ChaoHu , AhHui, 238000) Abstract:With the development and progress of the times, the concept of time and information become more and more outstanding. And the winners will be the ones who first grasp the firsthand data. As the internet technology is developing
4、rapidly, the communications industry is thriving too. Personal computers are extensively spreading among all families and units. In order to communicate with family members, friends and workmates accurately but on real time, chatting on net is one of the more economical and substantial ways, which h
5、as 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 client-side separately by the login box. The clients connect themselves to server
6、s 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 server-side. Traditional face-to-face communication is restricted by time and r
7、egion, 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 increased greatly.Keywords: chatting room; java; socket; multi-thread; c/s前 言使用Jav
8、a开发网络程序在网络飞速发展的今天已经显得格外重要, 与使用其它语言开发网络程序一样, Java的网络开发是相当方便的, 经过Socket进行网络信息传输。但与其它语言不同, Java语言天生具备网络开发的优越性, 使用Java能够快速开发安全的基于网络的服务和应用程序。在网络飞速发展的今天, 各种各样的的交流变的非常重要。人们的交流已经不能局限在小范围内, 人们渴望与其它国家或地区的人们进行交流。但由于地域的限制使人们不可能在短时间内得到面对面的交流。于是, 人们不得不使用Internet这个能够把全世界所有的人短时间内都联系到一起的新生事物, 因此网上聊天室就诞生了。刚开始的聊天室的功能很
9、简单, 就是单纯的文字交流。但随着时间的发展和技术的提高, 现在的聊天室已经具备强大的功能。例如, 传输文件, 语音聊天, 视频聊天等。使人们不但仅满足于言语上的交流, 还能够分享彼此的珍藏的图片, 看到对方的面容。这些新功能都受到了大家的一致好评。随着手机能够上网, 手机也能够登录到网上聊天室中, 使人们不但仅局限于坐在电脑前聊天, 能够随时随地的上网聊天。目 录第一章 绪论111论文背景及课题来源112本课题在国内外的发展状况113应解决的问题及系统开发意义1第二章 开发工具及相关技术介绍221 Java与Socket简介222 JBuilder5介绍323 C/S模型介绍324 用Jav
10、a实现Socket模型425 Java中的线程模型简介526 SQL SERVER 简介5第三章 系统需求分析731 系统任务描述732 系统功能分析7321 系统的功能需求73.2.2系统数据流图.83.2.3系统数据分析93.3 系统可行性分析10第四章 系统设计124.1 系统总体结构设计124.2 数据库设计144.3 系统功能模块详细设计14第五章 编码与实现185.1 系统主要模块代码185.1.1启动、 停止服务器185.1.2客户端连接服务器195.1.3 聊天室发送信息205.1.4 服务器转发信息205.1.5 服务器显示在线用户人数215.2 系统测试21结 束 语26参
11、考文献- 27 -致 谢- 28 -附 录- 29 -附录A 源程序主要代码- 29 -第一章 绪论11论文背景及课题来源随着网络技术的发展和普及, Internet已经成为人们获取有关信息和相互交流的重要途径之一, 越来越多的机构和组织开始利用网络资源传递、 发布、 收集和管理信息。这对各种类型的网络提供一次很大的挑战与机遇, 特别是经过网络进行信息交互的这种活动, 更加使网络的经营方式充满了活力和机动性5。基于C/S模型的Java聊天室是应用于网络交流领域的系统, 它的主要特点有: 1通用性: 聊天室系统在各种各样的网络中均能够运行, 系统具有较高的可移植性和使用性; 2实用性: 系统具有
12、良好的人机界面, 便于各类使用者操作, 提供了人性化的服务; 3及时性: 经过网络的连接, 系统双方的交流能够在短期内进行, 相比与传统面对面的交流节省不少时间15。聊天室中聊天内容的及时性和准确性是极其重要的, 它主要针对当今社会快节奏生活, 人们没有很多时间来等信息。本系统提供的功能便于系统使用双方的信息交流, 有效的提高了使用者的使用效率, 缩短了使用者的使用时间6。12本课题在国内外的发展状况随着网络技术的发展和普及, 多数网站纷纷利用自己的网络资源建立聊天室, 并为客户提供各种各样便捷的服务。中国的一些龙头网站, 如sina, 有很多聊天室, 供国内外的不同的人们进行不同话题的讨论,
13、 不但将会员发展由国内延伸到国际, 更是为提高自身的知名度提供了方便2。聊天室的开放性、 信息资源的多样性可为网站发展提供优良的广告宣传和商品推广, 这是其它网站活动方式所无法比拟的, 聊天室趋向方便化、 快捷化是各大网站成长的必然经历的阶段8。13应解决的问题及系统开发意义本系统针对聊天室用户的需要, 建立了客户端和服务器端。主要解决的问题包括: 1服务器端和客户端要实现界面化, 而且界面尽量人性化。2服务器端能够正确的启动, 而且时刻监视客户端, 保持与客户端的连接。3客户端能够快速准确的连接上服务器端, 发送的信息经服务器端能够转发给其它客户。4异常处理, 对于用户的不正确的操作系统应该
14、有提示。基于C/S的Java聊天室系统它的开发意义在于为人们之间相互交流提供了一个快捷、 方便的应用平台。大型网站能够经过聊天室来提高自身的知名度, 增加的访问流量。第二章 开发工具及相关技术介绍21 Java与Socket简介Java语言是Sun公司于1991年创立的一种新的程序设计语言。该语言与C/C+等传统程序设计语言不同, 具有突出的平台独立性, 高度的可靠性和安全性特点。1999年6月SUN公司重新定义了Java技术的结构, 将Java2平台分为三个版本: 标准版( J2SE) , 企业版( J2EE) 和微缩版( J2ME) 。当前, Java技术除了沿着J2SE, J2EE, J
15、2ME三种技术为主脉络迅速发展外, 还密切关注Internet环境下各种新型信息技术的发展, 并能够迅速与这些新技术融合, 积极支持这些新技术应用的开发1。Socket是Java中需要编写较低层次的网络通信程序( 例如Client/Server应用程序) 时提供的一种通讯机制。Socket是两个程序进行双向数据传输的网络通信的端点, 一般由一个地址加上一个端口号来标识。每个服务程序都在一个众所周知的端口上提供服务, 而想使用服务的客户端程序则需要连接该端口。经过Socket的数据是原始字节流信息, 通信双方必须根据约定的协议对数据进行处理与解释15。Socket通信机制提供了两种通信方式: 有
16、连接方式( TCP) 和无连接方式( UDP数据报) 。有连接方式中, 通信双方在开始时必须进行一次连接过程, 建立一条通信链路。通信链路提供了可靠的, 全双工的字节流服务。无连接方式中, 通信双方不存在一个连接过程, 一次网络I/O以一个数据报形式进行, 而且每次网络I/O能够和不同主机的不同进程进行。无连接方式开销小于有连接方式, 可是所提供的数据传输服务不可靠, 不能保证数据报一定到达目的地14。Java的有连接通信采用流式I/O模式。Socket是两个进程间通信链的端点, 每个Socket有两个流: 一个输入流和一个输出流。只要向Socket的输出流写, 一个进程就能够经过网络连接向其
17、它进程发送数据; 同样, 经过读Socket的输入流, 就能够读取传输来的数据9。有连接通信一般要经历以下四个基本步骤: 创立Socket, 建立连接; 打开连接到Socket的输入/输出流; 按照一定的协议对Socket进行读/写操作; 关闭Socket。第( 3) 步是程序员用来调用Socket和实现程序功能的关键步骤, 其它三步在各种程序中基本相同5。22 JBuilder5介绍JBuilder5是美国Borland公司最新推出的遵循SUN公司J2EE标准的集成开发工具, 是当前使用最广泛的Java开发工具之一。JBuilder作为业界领先的Java开发工具, 在集成了Tomcat并支持
18、WebLogic的同时, 其套装版更是集成了DreamweaverUltraDev, Rational Rose等产品, JBuilder5提供了可视化的集成开发工具, 支持开发人员向导极大地简化了开发人员的工作, 使开发更为快捷, 方便12。JBuilder5是一组全面的高效率工具, 使用Java编程语言创立可伸缩的, 高性能的和具有不依赖于平台性能的应用程序。由于可伸缩性和基于组件, JBuilder能够开发所有级别的应用工程, 从Apple到连接企业级的, 分布式的, 多层解决方案的网络数据库应用。JBuilder5环境是用纯Java编写。任何Java编写的程序都能够在JBuilder上
19、运行、 调试和工作3。23 C/S模型介绍C/S是Client/Server的缩写, 即客户机/服务器技术, 也能够称为C/S模型。很显然, C/S技术有以下几个基本特点: 1C/S技术一定包含两个部分, 一个作为用户接口的前端, 另一个作为共享资源接口的后端。前端被称为客户端, 后端被称为服务器端。客户进程包含逻辑和提供用户接口, 服务进程充当一个管理共享资源的软件引擎, 这些共享资源能够是数据库, 打印机, 调制解调器和处理机等。2前端与后端的任务对计算机资源有完全不同的要求, 这些计算机资源包括: 处理机速度, 内存, 磁盘速度, 容量, 输入输出设备等。3客户机与服务器由于可能基于完全
20、不同的硬件和操作系统, 因此它们之间的交流可能完全经过一套标准的已定义的API与RPC。4可伸缩性是C/S系统的一个很重要特性。无论是水平伸缩还是垂直伸缩都有很出众的表现。在这里, 水平伸缩( Horizontal scaling) 意味着方便地添加和删除客户工作站。垂直伸缩( Vertical scaling) 意味着移植到一个更大更快速的服务器或多服务器时, 即服务的升级和集群都会比较方便4。C/S软件技术是一种通用的, 基于消息的技术。在本论文中, 我们这样描述C/S, 网络上的一台计算机向网络上的另外一台计算机请求一个进程或数据, 如图1所示。响应服务器客户端请求网络图1: C/S技术
21、模型Client/Server 结构的优点是速度快, 缺点是当 Server 进行更新时, Client 也必须更新6。24 用Java实现Socket模型首先, 我们先介绍一下Socket的运行过程。一般在服务器的指定端口被绑定一个Socket, 此时服务器只是处于等待状态, 监听客户的连接请求。这个过程如图2所示。服务器客户端监听端口连接请求图2: 服务器监听客户的连接请求服务器一旦接收到客户机的连接请求, 服务器选择一个新的端口并绑定一个新的Socket与客户端建立的Socket对, 这个过程如图3所示。对客户机来说, 连接请求被接受, 客户端的Socket便被成功创立了, Socket
22、通信便能够开始进行。由于Server端的输出流是服务端的输入流, Server端的输入流是服务器的输出流, 反之亦然, 因此, Client与Server能够经过读写各自Socket进行交流。下面我们来看看在Java里对Socket的运行过程实现。服务器使用ServerSocket类来处理客户机的连接请求。当客户机连接到服务器所监听的端口时, ServerSocket将分监听端口服务器客户端连接请求端口图3: 服务器处理连接请求配一个新的Socket对象。这个新的Socket对象将连接到一些新端口, 负责处理与之相对应客户机的通信。然后, 服务器继续监听ServerSocket, 处理新的客户
23、机连接。13客户机首先创立一个Socket对象, 用于和服务器的通信。之后需创立两个对象: DataInputStream和PrintStream, 前者用于从Socket的InputStream输入流中读取数据, 后者则用于向Socket的OutputStream的写数据11。25 Java中的线程模型简介线程是程序中的一个执行流。一个执行流是由CPU运行程序代码并操纵程序的数据所形成的。因此, 线程被认为是以CPU为主体的行为。在Java中线程的模型就是一个CPU、 程序代码和数据的封装体。Java中的线程模型包含三部分。( 1) 一个虚拟的CPU。( 2) 该CPU执行的代码。( 3)
24、代码所操作的数据。线程模型在Java中是由Java.lang.Thread类进行定义和描述的。程序中的线程都是Thread的实例。因此用户能够经过创立Thread的实例或定义并创立Thread子类的实例建立和控制自己的线程序7。26 SQL SERVER 简介Sql Server 是微软公司推出的新一代关系数据库管理系统, 它继承了Sql Server 7.0版本的优点, 同时又增加了许多新的功能, 具有功能强大、 使用方便、 可伸缩性强、 与相关软件高度集成等特点。一经推出, 就受到了专业人士的好评, 当前已经成为web数据库系统中较为常见的一个数据库系统。Sql Server 可运行在wi
25、ndows 98/NT/ /XP等多种操作系统下10。Sql Server 的重要管理工具: 1服务管理器能够经过服务管理器启动、 停止、 暂停Sql Server 服务器的相关服务。当操作服务器中的数据时, 应该首先确保该服务器正常启动了相应的服务13。2企业管理器企业管理器提供了一种图形化界面来操作数据库对象, 在该界面中能够进行数据库、 表等数据对象的创立、 查询、 修改、 删除等操作, 能够完成Sql Server 中绝大多数的管理工作。3查询分析器查询分析器是运行、 测试用户的Transact-sql 语句、 批处理和脚本的场所。Transact-sql(又称为t-sql)是Sql
26、Server 在标准的SQL语句上进行了扩充的语言, 是交互式的结构化查询语言, 能够完成对Sql Server 数据库的所有操作。SQL(structured query language,结构化查询语言)起源于IBM的实验室, 当前SQL语言已经成为操作和检索关系数据库中数据的标准语言。在ASP中, 只要访问数据库, 就必然会使用SQL语言。第三章 系统需求分析31 系统任务描述本系统是采用Java基于C/S开发的聊天室。管理员在经过登录界面进入管理员界面, 即系统的服务器端并启动服务器后。此时, 如果有用户登录会在服务器端显示登录用户的用户名和当前连接的用户人数, 如果有用户聊天, 服务
27、器会显示出聊天信息。管理员在管理界面中能够随时关闭服务器。此时, 所有的客户端都将失去和服务器端的连接, 从而, 用户所有的聊天信息发送将不成功。用户只需要在登录界面中输入正确的用户名和密码即可登录聊天室而且连接上服务器。在聊天室中, 用户能够和聊天室中所有的用户发送信息, 还能够接收所有用户发送的信息, 能够查看到当前服务器的状态。如果用户已经登录了聊天室, 而服务器还没有启动, 则用户是不能够利用聊天室收发信息的。如果在运行过程中, 服务器断开则系统会有提示。32 系统功能分析321 系统的功能需求聊天室程序一般需要完成以下一些基本功能: 登录聊天室; 启动服务器; 关闭服务器; 用户之间
28、的聊天; 退出聊天室。本系统具体功能需求如下: ( 1) 聊天室管理员经登录界面登录到管理界面, 即系统的服务器端。用户经登录界面都进入聊天大厅。两类界面根据系统使用者的角色不同, 登录界面也有所不同。( 2) 不论是管理员还是用户都需要在登录界面输入正确的用户名和密码后才能够登录到各自的界面中去。( 3) 系统的两个主要界面都是为方便管理员和用户操作的。首先, 管理员进入到管理界面后能够方便的启动/停止服务器, 看到在线用户的信息和聊天信息。用户进入到聊天大厅中能够聊天, 查看服务器状态。( 4) 一个用户退出聊天室对其它用户不能产生影响, 而服务器断开与客户端的连接则所有的用户都失去与服务
29、器的连接。( 5) 用户的聊天信息录入, 重写, 发送, 接收方便, 快捷。( 6) 服务器状态, 聊天信息和在线用户人数及时刷新。( 7) 显著提高工作效率, 减少人力、 物力资源的投入。聊天室系统运行稳定、 安全性高、 性能可靠。3.2.2系统数据流图.系统的顶级数据流图如图4所示。聊天室系统管理员管理员用户用户启/停服务器发送信息用户信息接收信息图4: 系统顶级数据流图管理员的操作经过聊天室系统将反馈给管理员自己和用户。情况1: 管理员启动服务器, 管理员界面将出现用户连接信息和用户的聊天信息, 用户在登录后能够进入到聊天界面中。情况2: 管理员停止服务器, 管理员界面中所有的用户信息都
30、将不再刷新, 而用户所在聊天界面都将有服务器停止的提示。用户的操作经过聊天室系统将反馈给用户( 包括自己) 和管理员。用户的用户名, 聊天信息在管理员界面都能够显示出来。用户的聊天信息能够在自己和其它用户的界面上显示。登录界面用户名, 密码核对管理员界面启动/停止服务器查看在线用户人数查看用户聊天信息口令核对口令正确口令错误管理员界面2级数据流图: 图5: 管理员界面2级数据流图聊天室界面2级数据流图: 登录界面用户名, 密码核对聊天室界面发送聊天信息接收聊天信息查看连接状态口令错误口令核对口令正确图6: 聊天室界面2级数据流图3.2.3系统数据分析在仔细调查聊天室过程的基础上, 总结出该系统
31、需要满足以下系统数据的需求: 系统管理员资料。包括管理员用户名和管理员密码。用户信息记录用户的资料。包括用户的用户名、 登录密码、 真实姓名、 电话、 传真、 所属地区。聊天室系统总体E-R图如图7所示: 客户管理员客户管理聊天管理图7 聊天室系统总体E-R图聊天室系统管理员属性图如图8所示: 管理员管理员密码管理员用户名图8: 管理员属性图聊天室系统客户个人资料属性图如图9所示: 客户用户名传真真实姓名电话密码地区图9: 客户个人资料属性图3.3 系统可行性分析从技术发面来看, Java语言的优点主要表现在: 简单、 面向对象、 多线程、 安全性等方面。 1.简单性 Java与C+语言非常相
32、近, 但Java比C+简单, 它抛弃了C+中的一些不是绝对必要的功能, 如头文件、 预处理文件、 指针、 结构、 运算符重载、 多重继承以及自动强迫同型。Java实现了自动的垃圾收集, 简化了内存管理的工作。这使程序设计更加简便, 同时减少了出错的可能。 2.面向对象 Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法, 很好地实现了模块化和信息隐藏; 而类则提供了一类对象的原型, 经过继承和重载机制, 子类能够使用或重新定义父类或超类所提供的方法, 从而既实现了代码的复用, 又提供了一种动态的解决方案。 Java是一种完全面向对象的程序设计语言, 它除了数组、 布尔和
33、字符三个基本数据类型外的其它类都是对象, 它不再支持全局变量。在Java中, 如果不创立新类就无法创立程序, Java程序在运行时必须先创立一个类的实例, 然后才能提交运行。 Java同样支持继承特性, Java的类能够从其它类中继承行为, 但Java只支持类的单重继承, 即每个类只能从一个类中继承。 Java支持界面, 界面允许程序员定义方法但又不立即实现, 一个类能够实现多个界面, 利用界面能够得到多重继承的许多优点而又没有多重继承的问题。 3.多线程 多线程使应用程序能够同时进行不同的操作, 处理不同的事件。在多线程机制中, 不同的线程处理不同的任务, 她们之间互不干涉, 不会由于一处等
34、待影响其它部分, 这样容易实现网络上的实时交互操作。 Java程序能够有多个执行线程, 如能够让一个线程进行复杂的计算, 而让另一个线程与用户进行交互, 这样用户能够在不中断计算线程的前提下与系统进行交互。多线程保证了较高的执行效率5。4.安全性用于网络、 分布环境下的Java必须要防止病毒的入侵, Java不支持指针, 一切对内存的访问都必须经过对象的实例变量来实现, 这样就防止了程序员使用欺骗手段访问对象的私有成员, 同时也避免了指针操作中容易产生的错误。从开发环境来看 , JBuilder5是一组全面高效率工具, 使用Java编程语言创立可伸缩的, 高性能的和具有不依赖于平台性能的应用程
35、序。JBuilder5新增几个新功能, 并对已有的功能进行了改造, 包括一个单步产品安装过程, 以及自动卸载功能。其它功能还有: 对JAVA的支持, WEB应用开发, Enterprise JavaBeans(EJB), JMS和EAR向导, 团队开发, 编译器的增强功能, 工程属性, 配置JDK, 部署, IDE的增强功能, 语言的支持1。从自身能力来看, 本人在大学三年级时对Java语言进行过一个学期的系统学习, 对Java有一定的了解和掌握。虽然对Java的网络编程不是很熟悉, 可是经过到图书馆查阅书籍和网上收集资料, 现在对Java网络编程有了一定的了解。第四章 系统设计系统设计是本系
36、统开发的重要阶段, 它直接影响到目标系统的质量, 是整个开发工作的核心。系统设计阶段的主要任务是: 在系统分析提出的逻辑模型的基础上, 科学合理地进行物理模型设计。系统设计分为: 总体设计和详细设计。总体设计包括子系统的划分和模块设计, 详细设计包括各模块的详细描述、 输入输出设计等。系统设计遵循的原则是: 系统性、 适应性、 稳健性、 经济性。4.1 系统总体结构设计本系统是用Java语言基于C/S开发设计的, 其核心的Socket技术决定了该系统的安全性和稳定性, 从而保证了本系统有较强的使用性。其最重要的功能就是实现了聊天信息的快速性, 改变了传统的面对面聊天信息不确定因素多, 安全性低
37、的状况。聊天室设计图如图10所示。服务器客户代理客户端线程用户名用户Socket图10: 聊天室设计图 服务器使用多线程, 每个线程对应一个客户端,但线程经过客户代理同客户端交流, 在客户代理中有两个重要信息: 一个是用户名, 一个是用户名对应的Socket。客户向服务器请求连接后, 客户代理的Socket字段便被实例化, 当用户登录后, 客户代理的用户名字段被实例化, 一个完整的客户代理生成了。对客户端来说用户名是可见的, 客户端提供对用户名的操作。对服务器端来说, Socket是可见的, 服务器经过用户名操作Socket, 进而回应客户端的请求。基于C/S的Java聊天室系统的作用是提供给
38、人们一个平台进行相互交流, 在交流的过程中可能出现的情况也是不同的。因此, 可将系统分成两大模块: 服务器端模块和客户端模块。系统功能模块图如图11所示: 基于JAVA实现聊天室服务器端客户端管理员登录服务器管理用户登录聊天室启动, 停止服务器当前连接人数用户聊天信息 连接服务器 接收信息 认证用户 连接状态 显示信息 发送信息图11: 系统功能模块图1服务器端模块介绍: 该模块分为管理员登录和服务器管理两个子模块。首先, 管理员登录是指管理员经过输入用户名和密码进入到管理员界面, 即系统的服务器端。而服务器管理是指管理员进入到服务器端界面后, 对系统的服务器端所做的一些操作, 如启动、 停止
39、服务器, 查看当前用户连接人数, 和用户的聊天信息。2、 客户端模块介绍: 该模块分为用户登录和聊天室两个子模块。首先, 用户登录是指用户经过输入用户名和密码进入到聊天室中, 而且聊天室自动连接上服务器。聊天室模块是指系统聊天室所具有的基本功能, 如发送、 接收信息, 查看当前和服务器连接状态, 显示发送和接收的信息。4.2 数据库设计本次数据库开发工具为Microsoft SQL Server , 具体设计的表单如下: 表1: 用户信息表字段名类型大小允许空备注usernamenvarchar20否用户名passwordnvarchar20否密码Truenamenvarchar10是真实姓名
40、countrynvarchar16是所属地区favnvarchar20是传真telnvarchar20是电话表2: 管理员信息表字段名类型大小允许空备注usernamenvarchar20否用户名passwordnvarchar20否密码4.3 系统功能模块详细设计管理员登录模块流程图如图12所示: 开始输入用户名与密码查询数据库是否有这条记录? 进入管理员界面提示用户名或密码错误结束图12: 管理员登录模块流程图下面对管理员登录程序流程图做简要叙述。首先, 管理员在登录界面中输入管理员用户名和密码, 并向系统发送。系统在收到发送信息后查询数据库, 如果在数据库中存有相同的信息, 则运行管理员
41、界面。如果在数据库中没有相同信息, 则系统提示错误, 并返回登录界面。服务器管理模块流程图如图13所示: 管理员身份验证管理员界面关闭服务器启动服务器查看在线用户人数开始结束提示用户名或密码错误正确错误查看聊天信息图13: 服务器管理模块流程图下面对服务器管理程序流程图做简要叙述。首先, 管理员经过登录界面进入到管理员界面中。在此界面中能够实现对系统服务器的启动和关闭, 查看在线用户人数和用户的聊天信息。用户登录模块流程图如图14所示: 开始输入用户名与密码查询数据库是否有这条记录? 进入聊天室界面提示用户名或密码错误结束服务器端显示图14: 用户登录模块流程图用户开始结束身份验证聊天室查看连
42、接状态接收信息发送信息提示用户名或密码错误正确错误查看聊天信息下面对用户登录程序流程图做简要叙述。首先, 用户在登录界面中输入用户名和密码经过系统验证后进入到聊天室中, 同时, 如果服务器已经启动, 系统自动将聊天室连接上服务器, 用户能够使用聊天室, 而且在服务器端有用户登录的提示。如果服务器没图15: 聊天室模块流程图有启动, 则用户能够进入到聊天室, 可是使用不了聊天室。聊天室模块流程图如图15所示。能够对聊天室程序流程图做这样的简要叙述: 用户在登录界面中输入用户名和密码进入到聊天室中。在此界面中用户能够实现向其它用户发送信息, 接收其它用户发送的信息, 查看当前和服务器的连接状态。第
43、五章 编码与实现5.1 系统主要模块代码5.1.1启动、 停止服务器class Serverchat extends Threadpublic Serverchat() tryintPort=Integer.parseInt(textPort); InetAddress host=InetAddress.getLocalHost();localhost.setText(host.getHostName()+host.getHostAddress(); ss=new ServerSocket(intPort); ssLive=ss.isBound();display(服务器已启动! ); cat
44、ch(Exception e) display(服务器已关闭! );this.start();public void run()while(true) tryclientSk=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(checkName(c)activeConnects+; elsetoClient.println(TAKEN);disconnect(c); i+; break;while(iclients.size(); 5.1.2客户端连接服务器class Clientchat extends Threadpublic Clientchat()