毕业设计(论文)-基于JAVA的聊天室—客户端.doc_第1页
毕业设计(论文)-基于JAVA的聊天室—客户端.doc_第2页
毕业设计(论文)-基于JAVA的聊天室—客户端.doc_第3页
毕业设计(论文)-基于JAVA的聊天室—客户端.doc_第4页
毕业设计(论文)-基于JAVA的聊天室—客户端.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

河河北北农农业业大大学学 本本科科毕毕业业论论文文 (设设计计) 题题 目:目:基于 JAVA 的聊天室客户端 学学 院:院: 信息科学与技术学院 专业班级:专业班级: 计专升本 1101 班 学学 号:号: 二二 O 一二一二 年年 六六 月月 二二 日日 摘要摘要 随着互联网的发展,网络聊天工具作为一种交流工具,已经受到网民的青 睐。目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯 QQ、MSN-Messager 等等。 这个项目是用 Java 技术制作的,其中 Java 是一种程序设计语言,它具有简 单的、面向对象、分布式、健壮性、安全性、可移植性等特点,并且提供了多 线程的功能,使得在一个程序里可同时执行多个小任务,开发中利用了计算机 网络编程的基本理论知识,如 TCP/IP 协议、客户端/服务器端模式(Client/Server 模式) 、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流 来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些 基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用 Eclipse 为 基本开发环境和 Java 语言进行编写,首先可在短时间内建立系统应用原型,然 后,对初始原型系统进行不断修正和改进,同时,采用多线程、多任务的设计 思想,开发出性能稳定,功能全面的服务器。完整的实现系统的功能。通过本 次毕业设计可以学到如何应用和实现面向对象的各种方法,如何使用 Eclipse 集 成开发环境来创建和开发项目,从而完整的实现整个系统的功能。 该系统主要包括了服务器端和客户端界面使用两部分,其中服务器端用来 接收新用户的注册和注册用户的登录验证以及进行服务器信息和用户信息的管 理,其中用到了 Socket 套接字建立服务器,服务器能读取、转发客户端发来的 信息。客户端通过注册界面让新用户进行注册;通过登录界面使用已注册的用 户名和密码登录到聊天服务器;用户通过登录验证后即可进行在线聊天。多用 户的即时聊天功能必须使用 Thread 类来建立多线程。本聊天系统采用 Eclipse 为基本的开发环境,用 java 语言进行程序的编写的。 关键词:关键词:客户端/服务器,多线程,聊天,socket ABSTRACT With the development of the Internet, the chat tool as a communication tool, has been popularly accepted by netizens of all ages. At present, there are many powerful chat tools, of which Tencent QQ,MSN - Messager are much more prevalent. This project is with Java technology produced of, which Java is a programming language, it has simple of, and-oriented object, and distributed, and robust sexual, and security, and portability, features, and provides has multithreaded of features, makes in a program in can while implementation multiple small task, development in the using has computer network programming of basic theory knowledge, as TCP/IP agreement, and client/server end mode (Client/Server mode), and network programming of design method,. Read, send to the information in network programming, is to use streams to achieve the exchange of information, which he introduced to the realization of a system of information flow analysis, contains some basic software engineering methods. After analysis of the situation, using Eclipse as a development environment and LAN chat tool written in the Java language, first of all, you can build systems application prototype in a short time, and then, to keep the initial prototype system fixes and improvements, at the same time, multithreaded, multitasking design ideas, developed a stable performance, full-featured server. Complete system functionality. This can learn how to apply for graduation design and realization of object-oriented methods, how to use the Eclipse integrated development environment to create and develop projects, so as to complete the entire system functionality. The system includes both server-side and client-side interface uses two main parts, which server to use for new user registrations and registered user login authentication, and server information and user information management, which was used to establish Server Socket , the server can read the message, forwarded to the client. Registered by the client interfaces to register new users through login with a registered username and password to log on to the chat server; after user login authentication for online chat. Multi-user chat Thread class must be used to create threads. This chat system uses Eclipse as a basic development environment, with programs written in the Java language. Key words: Client / server, multiple threads, chat, socket 目录目录 1 1绪论绪论.1 1.1 课题背景.1 1.2 课题研究的目的和意义.1 1.3 国内外概况.2 1.4 课题的主要研究工作.2 2.2. 系统开发环境与实用技术系统开发环境与实用技术.2 2.1 本课题开发环境的选择.2 2.2 本课题开发工具的选择.3 2.3 SOCKET技术.4 2.4 多线程技术 .4 3.3. 系统的分析与设计系统的分析与设计 .5 3.1 系统的总体需求.5 3.2 客户端的功能.6 3.3 流程设计.7 3.4 分析 SOCKET在客户端的开发流程.8 3.5 系统的设计方案.8 3.6 性能需求分析 .10 4.4. 系统的实现系统的实现.10 4.1 系统的模块分析.10 4.2 主要引入的包.10 4.3 主要代码.11 4.4 界面设计.14 5.5. 总结总结.17 参考文献参考文献.18 致谢致谢.18 1 1 1 绪论绪论 随着信息科学的进步与互联网络的发展,虽然通过网络的聊天软件很多, 但针对于内部系统的、局域网内的聊天和公司内部的上下级沟通的聊天通讯软 件却很少。所以开发一个此类型的即时通讯系统就变得非常有意义了。而在技 术选择上 Java 技术自然成为实现此系统的首选。本文所介绍的网络聊天系统是 基于 JAVA 编程语言开发设计的,其主要特性是能动态、实时的完成消息的传 递,且具有高效的交互性,能更有效的处理客户请求,其运行时所需环境及工 作流程和各模块的工作原理将在本文依次介绍,并且文中提供了部分程序源代 码。 1.11.1 课题背景课题背景 在这个信息极其发达的时代,我们目前可以用来进行信息交流的方法也非 常多,比如电报、电话、电子邮件等通讯手段,但是这些或者不方便或者有局 限性或者有费用的问题,比如电话就是属于费用比较高的一种方式,电子邮件 则不是一种及时联系的手段,需要一定时间才能到达,只能作为一种辅助交流 的手段。但是,聊天室这个就能很好的解决这个问题,大家可以各自在不同的 地点就可以在聊天室中发言,大家互相讨论,而且好的聊天室还有各种表情符 号等可以加强我们的表达,并且费用低廉,信息交流速度快,只有这样,才能 在这个涌动的社会中加强联系,创造出更多的财富。 1.21.2 课题研究的目的和意义课题研究的目的和意义 近年来,随着 Internet 的迅速崛起,互联网已日益成为收集提供信息的最佳 渠道并逐步进入传统的流通领域。于是网络聊天室开始流行起来,越来越多的 用户通过网络聊天畅谈自己的心扉。 随着越来越多的应用人群,开发一个网络聊天室是极其有意义的。本课题 主要介绍的是基于 JAVA 的网络聊天室的开发设计,其主要功能是能够动态、 实时的完成信息的传递,并且具有高效的交互性和有效的处理用户请求,易于 维护和更新。 为了更好的充实人们的生活,我特做此系统更满足人们在日常生活的需要 和需求,也为了满足人们在信息流通方面的方便,使得人们更能分享互联网上 的资源,使得的网络的意义更能充分的体现。 交流是系统的关键也是目的,它能让你在简单的对话中了解复杂的社会, 多彩的世界,使得人与人之间的距离彻底拉近,就像是面对面的交谈,彼此之 间没有界限,没有差别,只有心与心的共振。 2 1.31.3 国内外概况国内外概况 目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯 QQ、新浪 UC、网易泡泡等,国外有著名的 MSN 以及跨平台 Gaim 等。本人取 最具代表性的 QQ 和 MSN 进行了一些研究,作为我开发聊天系统的准备。腾讯 无疑是国内即时通讯市场的霸主,自从 99 年进入即时通讯领域并迅速占市场之 后,其在国内用户数量始终高居榜首,即使近几年面对微软 MSN 的强大攻势, 腾讯 QQ 的时常占有率依然稳步增长。腾讯的成功与其对 QQ 的不断创新和完 善是分不开的。参考了许多网络上的资料,以及自己通过观察腾讯 QQ 运行时 的各种细节。可以确定腾讯 QQ 是以多服务器提供服务、服务器总控客户端、 客户端之间 UDP 直连通信的。并且在两个客户端之间不能建立直连的情况下, 才由服务器进行中转通信。 1.41.4 课题的主要研究工作课题的主要研究工作 本系统是一个典型的聊天系统。该程序分两大部分来编写,服务器端和客 户端。服务器端用来响应客户端所发出的请求,并把接受到客户端的响应分别 作出响应的处理。客户端用来接收用户的请求,然后做出相应的操作。 其中网络传输的实现和多线程技术是此聊天系统的核心部分,而 Java 提供 的 API 函数中针对网络编程的 Socket 类正是针对网络编程的,Java 语言是一种 支持多线程的语言,多线程在服务器端主要是要满足支持多个用户的同时登陆, 在客户端主要满足一对多的同时聊天。 2.2. 系统开发环境与实用技术系统开发环境与实用技术 2.12.1 本课题开发环境的选择本课题开发环境的选择 在进行开发之前,首先决定的第一个问题就是该使用什么开发环境来编写, 以目前常用的开发语言来讲有 C/C+、NET 技术、JAVA、VB 几种。还有 Eclipse、JBuilder 等,这些并不是语言,而是程序在构建程序时的“集成开发工 具” ,不过它们在开发设计的过程中也占有相应重要的角色,因为选用正确的集 成开发工具,可以加速程序设计的进行、测试与排错,因而对整体进度具有决 定性的影响。 1、就执行平台而言,必须考虑的问题之一是用户可能使用的操作系统。用 户可能使用的是 Windows 和 Linux。JAVA 语言具有平台无关性,可以不需要 任何修改就可以运行在支持 JAVA 的任何计算机上。 2、JAVA 的 Swing 组件开发技术可以开发丰富的图形界面,并且 Swing API 类提供了丰富的外部接口和方法,可以方便实现系统功能。 3 3、就项目开发而言,纯粹的面向对象,加上数量巨大的类所提供的方法库 的支持,使得利用 JAVA 开发各种应用程序,可以说是易如反掌。此外,在程 序除错、修改、升级和增加新功能等方面,因其面向对象的特性,使得这些维 护也变得非常容易。 4、JAVA 支持内在的多线程运行,提供分布式的并发机制,运行效率高。 5、异常处理,为了使 Java 程序更稳定、更安全,Java 引入了异常处理机 制。能够在程序中产生异常情况的地方,执行相应的处理,不至于因突发或意 外的错误造成执行中断或是死机。通过这种异常处理,不仅能够清晰地掌握整 个程序执行的流程,也使得程序的设计更为严谨。 6、高性能,Java 可以在运行时直接将目标代码翻译成机器指令。Sun 用直 接解释器一秒钟内可调用 300,000 个过程。翻译目标代码的速度与 C/C+的性 能没什么区别。 7、网络功能,Java 可以说是借助因特网而重获新生的,自然具备编写网络 功能的程序。不论是一般因特网/局域网的程序,如 Socket、Email、基于 Web 服务器的 Servlet、JSP 程序,甚至连分布式网络程序,如 CORBA、RMI 等的 支持也是非常丰富的,使用起来也很方便。 8、源回收处理,Garbage Collection 是由 JVM 对内存实行动态管理的。程 序需要多少内存、哪些程序的内存已经不使用了,需要释放归还给系统,这些 烦琐且危险的操作全部交由 JVM 去管理。让我们能够更专心地编写程序,而不 需要担心内存的问题。内存的统一管理,对于跨平台也有相当大的帮助。 2.22.2 本课题开发工具的选择本课题开发工具的选择 Java 的开发工具有很多,而且各有优缺点,Eclipse 是一个开放可扩展的集 成开发环境(IDE) 。它不仅可以用于 Java 的开发,通过开发插件,它可以构建 其他的开发工具。Eclipse 是开放源代码的项目,并可以免费下载。支持最新的 Java 标准,并且缩短了开发周期。一直以其友好的集成开发环境在业界受到广 泛的赞誉,这也是 Eclipse 一直是广大程序员最喜爱的 Java 开发工具的原因之 一。 Eclipse 的可视化集成开发环境包括文本编辑、工程创建工具、对象浏览器 和调试器等。用户可以在集成开发环境中创建工程和打开功能,建立、打开和 编辑文件,并可以编译、运行和调试应用程序。可以说在 Eclipse 集成开发环境 中开发 Java 程序,快速而且高效。其主要特点如下: 开放的可扩展 IDE 成功的底层图形界面 API 强大的插件加载功能 可以通过导入一些 CVS 相关的插件来实现版本管理的便易性 4 2.32.3 Socket 技术技术 Socket 概述 套接字(Socket)技术用于实现网络上客户端程序和服务器端程序之间的 连接,即网络上两个以双工方式通信的进程之间的连接端点称为套接字。套接 字相对 URL 而言是在较低层次上进行通信。 套接字是 TCP/IP 中的基本概念,它的作用类似于日常使用的插座,主要用 来实现将 TCP/IP 包发送到指定的 IP 地址。通过 TCP/IP Socket 可以实现可靠、 双向、一致、点对点、基于流的主机和 Internet 之间的连接。使用 Socket 可以 用来连接 Java 的 I/O 系统到其他程序,这些程序可以在本地计算机上,也可以 在 Internet 的远程计算机上。 利用 Socket 实现数据传送的基本原理 服务器程序启动后,服务器应用程序侦听特定端口,等待客户的连接请求, 当一个连接请求到达时,客户和服务器之间建立一个通信连接,在连接过程中, 客户被分配一个本地端口号与一个 Socket 连接,客户通过写 Socket 来通知服务 器,服务器通过读 Socket 来获取信息。类似地,服务器也获取一个本地端口号, 它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也给它的本 地端口连接一个 Socket 并读写它,以便与客户通信。 应用程序一般仅在同一类的套接字之间通讯。不过只要底层的通信协议允 许,不同类型的套接字之间也可以通信。 套接字(Socket)的类型 Java 中套接字一般有两种类型:TCP 套接字和 UDP 套接字。 TCP 和 UDP 扮演相同角色,但做法不同。两者都接收传输协议数据包并 将其内容向前传送到表示层。 TCP 把消息分解成数据包(数据报,datagrams)并在接收端以正确的顺序 把它们重新装配起来。TCP 还处理对遗失数据包的重传请求。有了 TCP,位 于上层的层要担心的事情就少多了。 UDP 不提供装配和重传请求这些功能。它只是向前传送信息包。位于上层 的层必须确保消息是完整的并且是以正确的顺序装配的。 一般而言,UDP 强加给您的应用程序的性能开销更小,但只在应用程序不 会突然交换大量数据并且不必装配大量数据报以完成一条消息的时候。否则, TCP 才是最简单或许也是最高效的选择。 2.42.4 多线程技术多线程技术 多线程,是指从软件或者硬件上实现多个线程并发执行的技术。具有多线 5 程能力的计算机因有硬件支持而能够在同一时间运行多于一个线程,进而提升 整体处理效能。具有这种能力的系统包括对称多处理机、多内核处理器以及芯 片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。 多线程概述 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令 流都称为一个线程,彼此间互相独立。 线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统 负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程 共享一个存储空间,这使得线程间的通信远较进程简单。 多个线程的执行是并发的,也就是在逻辑上“同时” ,而不管是否是物理上 的“同时” 。如果系统只有一个 CPU,那么真正的“同时”是不可能的,但是 由于 CPU 的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它, 只需要设想各个线程是同时执行即可。 多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控 制流彼此独立,使得各个线程之间的代码是乱序执行的。 在 Java 中实现多线程 Java 提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方 法来方便我们控制自己的各个线程,我们以后的讨论都将围绕这个类进行。 那么如何提供给 Java 我们要线程执行的代码呢?让我们来看一看 Thread 类。Thread 类最重要的方法是 run(),它为 Thread 类的方法 start()所调用,提供 我们的线程所要执行的代码。为了指定我们自己的代码,只需要覆盖它! 方法:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类 中重写 run() ,加入线程所要执行的代码即可。 3.3. 系统的分析与设计系统的分析与设计 3.13.1 系统的总体需求系统的总体需求 人们日常生活中越来越多地使用新技术来为自己的工作和学习服务。一个 操作简单、界面友好、运行稳定的网络聊天室对于小型局域网内的用户可以起 到很好的交流作用。本聊天系统就是一个用于局域网的聊天系统,虽然聊天的 基本功能和许多大型的聊天室相比该聊天系统比较简单,但能实现聊天的基本 功能,可以公聊和私聊等,基于时间和技术的原因,很遗憾传送文件的功能尚 未实现。 服务器端主要完成两个功能:服务器信息管理和用户信息管理。服务器端 启动服务器与客户端进行连接。 客户端主要实现三个方面的功能:用户注册、用户登录和用户聊天。客户 6 端申请与服务器端建立连接,当客户断与服务器端建立连接通道后就可以向服 务器端发送登陆信息,然后客户端完成信息的编辑、发送和接受功能。 图 3.1 系统的功能模块 3.23.2 客户端的功能客户端的功能 服务器程序启动后,服务器应用程序侦听特定端口,等待客户的连接请求, 当一个连接请求到达时,客户和服务器之间建立一个通信连接,连接成功后同 时连接到服务器端的两个已注册用户就可以在聊天室进行聊天。 3.2.1 用户注册用户注册 用户可以通过提供基本信息注册成为本聊天系统的合法用户。 (1)判断用户名、密码、头像、年龄等信息是否不为空。 (2)判断输入密码与判断密码是否一致。 (3)判断电子邮件是否为合法电子邮件。 3.2.2 用户登录用户登录 注册用户可以通过输入用户名和密码登录聊天系统以便与其他用户聊天。 (1)判断用户名是否存在。 (2)判断登录的用户名和密码是否正确。 (3)退出登录程序。 聊天系统 服务器端 客 户 端 服务器信息管理 用户信息管理 用户注册 用户登录 用户聊天 交 互 7 (4)进入注册程序。 3.2.3 用户聊天用户聊天 登录聊天系统的用户可以进行群聊或者私聊。 (1)可以向登录聊天系统的个用户发送聊天信息进行群聊。 (2)可以向指定登录聊天系统用户发送信息进行私聊。 (3)可以查看时钟。 (4)可以保存用户聊天记录。 (5)可以清除屏幕信息。 3.33.3 流程设计流程设计 是 否 否 是 否 是 否 是 图 3.2 聊天系统流程图 聊 天 结束 开始 输入登录信息 登 录 验 证 登录成功? 是否注册? 注 册 注册成功? 注 册 填写注册信息 注册信息验证 通过验证 返回 True 返回 False 8 3.43.4 分析分析 Socket 在客户端的开发流程在客户端的开发流程 Socket(套接字)用于实现网络上客户端程序和服务器端程序之间的连接。 客户端 Socket 应用程序与服务器端 Socket 应用程序的流程很相似,最大的差别 在于: (1) 服务器端 Socket 应用程序主要用于侦听及接收客户端的连接,而 客户端 Socket 应用程序则用于尝试与服务器端建立连接。 (2) 客户端 Socket 应用程序发送信息指令至服务器端,并接收服务器端 所返回的结果;而服务器端 Socket 应用程序则处理指令逻辑,并将结果或错误 信息发送至客户端。 客户端应用程序首先通过 socket 函数建立客户端的 socket,其主要目的是 与指令的服务器端(指定主机的 IP 地址及通信端口号)建立连接,此操作由 connect 来完成。当服务器端收到 connect 的连接请求时,则由服务器端建立连 接。 建立客户端 Socket 应用程序的步骤大致如下: (1)建立客户端的 Socket,在建立时需指定欲连接服务器端的主机名称 (或 IP 地址)与 Internet 服务的通信端口。 (2)发送特定信息或指令至服务器端。 (3)接收服务器端返回的执行结果或错误信息,并以特定格式显示。 (4)当客户端不需要服务器端的处理时,便关闭 Socket 通信连接。 3.53.5 系统的系统的设计方案设计方案 聊天系统的设计跟普通的网站设计有着许多不同的地方,普通网站设计所 考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而 聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过 程中,必须要考虑好以下几个设计要点: 实现思想 3.5.1 实现思想实现思想 在 Internet 上的聊天程序一般都是以服务器提供服务端连接响应,使用者通 过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是 一个面向连接的通信过程。因此,程序要在 TCP/IP 环境下,实现服务器端和客 户端两部分程序。 3.5.2 客户端工作流程客户端工作流程 9 客户端程序相对简单,只需要建立一个 Socket 与服务器端连接,成功后通 过这个 Socket 来发送和接收数据就可以了。 系统采用客户/服务器模式(如图) Socket(TCP)Socket(TCP)Socket(TCP) 客户 服务器 客户客户 图 3.3 客户和服务器之间的传输 在服务器端程序中,首先通过 ServerUI 启动服务器,然后通过 QqServer 等 待客户端的连接。当收到来自客户端的连接请求时,便通过 QqServerThread 线 程建立与客户端的连接。 客户端的应用程序与服务器段 Socket 应用程序的流程很相似,最大的区别 在于: (1) 服务器端 Socket 应用程序主要用于侦听及接收客户端的连接,而客 户端 Socket 应用程序则用于尝试与服务器端建立连接。 (2) 客户端 Socket 应用程序发送信息指令至服务器端,并接收服务器端 返回的结果;而服务器端 Socket 应用程序则处理指令逻辑,并将结果或错误信 息发送至客户端。 其中里面也用到了 TCP 传输协议,TCP 协议是 TCP/IP 的传输层提供用于 主机间传输数据的传输协议。 TCP(Transmission Control Protocol)为面向链接的通信协议,其主要目的是 提供大量数据的传输并确保传输无误,具有错误侦测、数据复原及数据重送等 功能。 TCP 在传输数据之前,会先在主机间(例如服务器端和客户端)建立通信链 接,通过此通信链接,数据可在计算机间传输,如图 3.3 所示。 发送请求 确认请求 建立通信 10 客户端 服务器端 图 3.4 TCP 通信协议 3.63.6 性能需求分析性能需求分析 (1)可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处 理,使程序具有较高的容错性能。 (2)宜操作性,程序简单易懂,容易上手使用。设计界面是简化界面,模 拟 QQ 等现有即时通讯工具的界面,使用户能很容易看懂并使用。 (3)开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清 晰的理解整个系统的设计思路和实现细节。 (4)模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易 于以后的维护与扩展,方便于在工作中的应用。 4.4. 系统的实现系统的实现 4.14.1 系统的模块分析系统的模块分析 本系统主要有系统的登录(Login.java) 、系统的注册(Register.java) 、 聊天室(ChatRoom.java) 、服务器程序(AppServer.java)和服务器与客户端 的连接程序(Connection.java) 、服务器的框架程序(FrameServer.java) 。 现在主要来介绍客户端的几个程序的实现: Login.java 是系统的登录程序,主要用到了 AWT 的图形用户界面和 Java 的事件处理。其主要功能包括获取用户名和密码以及验证用户名密码是否正确 等,同时可以进入逐层界面。 Register.java 为用户的注册程序,用户通过输入相关信息注册成聊天系统用 户的功能。用户填写完信息后点击确定按钮将进行验证,如:用户名不能为空, 两次密码应一致,年龄必须为合法年龄,电子邮件必须为合法的电子邮件格式。 点击返回按钮则进入用户登录界面,点击清空可以将填写信息清空恢复到初始 状态。 ChatRoom.java 是本系统的用户聊天程序,主要提供用户即时聊天的功能。 用户可以清除之前的聊天内容、可以更改字体颜色字号、也可以将聊天记录保 存到记事本中。 4.24.2 主要引入的包主要引入的包 1. import javax.swing.* 提供一组“轻量级” (全部是 Java 语言)组件,尽量让这些组件在所有平台 11 上的工作方式都相同。 2. import java.awt.*; 包含 Java 语言用来构建图形用户界面(GUI)的类库,包括许多界面元素和 资源。Java.awt 包提供 Java 语言中的图形类、组成类、容器类、排列类、几何 类、事件类、和工具类等。 3.import java.awt.event.*; Java.awt.event 包是对 JDK1.0 版本中原有的 Event 类的一个扩充,它使得程 序可以用不同的方式来处理不同类型的事件。该包中定义了许多不同类型的事 件监听器类,使每个图形界面元素本身可以处理它上面的事件。 4.import .*; 提供用于网络应用程序的类。这些类包括用于创建套接字的工厂。使用套接 字工厂可以封装套接字的创建和配置行为。 5.import java.io.*; 通过数据流、序列化和文件系统提供系统输入和输出。 除非另有说明,否 则向此包的任何类或接口中的构造方法或方法传递 null 参数时,都将抛出 NullPointerException。 6. import java.util.*; 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国 际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组) 。 4.34.3 主要代码主要代码 聊天室聊天室 ChatRoom.java 中主要方法中主要方法 / /监听按钮响应/ public void actionPerformed(ActionEvent ae) Object source = (Object) ae.getSource(); if (source.equals(btnTimer) new Clock(); if (source.equals(btnCls) clearMessage(); if (source.equals(btnExit) exit(); if (source.equals(btnSend) sendMessage(); if (source.equals(btnSave) saveMessage(); if (source.equals(lstUserList) / 双击列表框 12 changeUser(); / /监听窗口关闭响应/ class Windowclose extends WindowAdapter public void windowClosing(WindowEvent e) exit(); / 清屏按钮 public void clearMessage() taUserMessage.setText(); / 退出按钮 public void exit() Exit exit = new Exit(); exit.exitname = strLoginName; / 发送退出信息 try Socket toServer = new Socket(strServerIp, 1001); / 向服务器发送信息 ObjectOutputStream outObj = new ObjectOutputStream(toServer .getOutputStream(); outObj.writeObject(exit); outObj.close(); toServer.close(); frmChat.dispose(); / this.destroy(); catch (Exception e) / exit()结束 / 发送按钮 public void sendMessage() Chat chatobj = new Chat(); chatobj.chatUser = strLoginName; chatobj.chatMessage = txtMessage.getText(); chatobj.chatToUser = String.valueOf(cmbUser.getSelectedItem(); chatobj.whisper = chPrivateChat.isSelected() ? true : false; chatobj.emote = emote.getSelectedItem().toString(); / 向服务器发送信息 try Socket toServer = new Socket(strServerIp, 1001); ObjectOutputStream outObj = new ObjectOutputStream(toServer 13 .getOutputStream(); outObj.writeObject(chatobj); txtMessage.setText(); / 清空文本框 outObj.close(); toServer.close(); catch (Exception e) / sendMessage()结束 / 保存按钮 public void saveMessage() try FileOutputStream fileoutput = new FileOutputStream( this.strLoginName + _message.txt, true); String temp = taUserMessage.getText(); fileoutput.write(temp.getBytes(); fileoutput.close(); JOptionPane.showMessageDialog(null, 聊天记录保存在 + this.strLoginName + _message.txt); catch (Exception e) System.out.println(e); / 将所选用户添加到 cmbUser 中 public void changeUser() boolean key = true; String selected = lstUserList.getSelectedItem(); for (int i = 0; i cmbUser.getItemCount(); i+) if (selected.equals(cmbUser.getItemAt(i) key

温馨提示

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

评论

0/150

提交评论