收藏 分销(赏)

局域网下的java聊天软件毕业设计.doc

上传人:人****来 文档编号:5124998 上传时间:2024-10-26 格式:DOC 页数:23 大小:668.50KB
下载 相关 举报
局域网下的java聊天软件毕业设计.doc_第1页
第1页 / 共23页
局域网下的java聊天软件毕业设计.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述
摘要 随着互联网的迅猛的发展,网络逐渐成了人们获取信息的主要途径。做为传统的信息交流工具e-mail,因为其发送和接受消息时间相对滞后的缘故,不能满足人们迅速获取信息的要求。即时通讯应运而生,为大众提供了一种崭新的综合的信息交流平台。即时通讯不同于传统的通讯工具e-mail,在于它的交流是实时的,使得人们交流更加便捷和快速,满足了人们迅速获取信息的需求,以深受大众的喜爱,有着很好的发展前景。其中聊天软件就是即时通讯的具体实现。 本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 关键字:多线程;客户机/服务器;java;socket;eclipse Abstract With the rapid development of Internet, the network gradually becomes the main way for people to obtain information. As the traditional information communication tool e-mail, because of the relative lag of the sending and receiving messages of time reasons, cannot satisfy people quick access to information requirements. Im emerge as the times require, provides a new integrated information exchange platform for the public. Unlike traditional instant messaging communication tool e-mail, the exchange is that it is a real-time, makes people communicate more convenient and fast, satisfying the people quick access to information needs, so loved by the public, has a good development foreground. Concrete realization is instant messaging chat software. The system built on the JAVA platform, the system design using object-oriented technology and object-oriented design principles. System uses the C / S structure, client and client-side and server-side client and send messages through Socket. The use of JAVA language, development tools using Eclipse. Design and Implementation of server-side process, the use of multi-threading technology, which can process in a single run at the same time a number of different threads, the implementation of different tasks. Procedures greatly enhanced the use of server resources. Keywords: multiple threads ; client/server ; Java ; socket ; Eclipse. 目 录 1 绪论 3 1.1聊天软件开发背景 3 1.2 Java语言 3 1.2.1 Java的发展历史 3 1.2.2 Java的特点 4 1.2.3 Java与Internet 5 1.3 Socket编程 6 1.3.1 关于TCP/IP协议 6 1.3.2 服务器和客户机 6 2 需求分析 7 2.1可行性分析 7 2.2系统功能需求 7 2.3 系统性能需求 7 3 概要设计 8 3.1运行环境 8 3.2软件功能框架图 8 3.2.1服务端功能框架图 8 3.2.2客户端功能框架图 8 4 详细设计 9 4.1流程图 9 4.1.1服务端 9 4.1.2客户端 10 4.2编写服务器端程序 10 4.2.1通讯数据包说明(格式说明,包类型说明) 10 4.2.2 问题陈述 11 4.2.3 解决方案 11 4.3编写客户端程序 13 4.3.1通讯数据包说明(格式说明,包类型说明) 13 4.3.2 问题陈述 13 4.3.3解决方案 13 5系统实现 17 5.1服务端 17 5.1.1服务器启动配置 17 5.1.2服务端主窗口 17 5.2客户端 18 5.2.1客户端登陆 18 5.2.2客户端配置 19 5.2.3客户端聊天主窗口 19 致谢 21 参考文献 22 1 绪论 1.1聊天软件开发背景 Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。网上聊天系统作为一种方便消费者与人们之间联系的实用系统便应运而生。网上聊天系统是为人们进行交流和联系提供的一个平台。通过提供完善的网上聊天系统的管理,可以达到增进人们与消费者之间、消费者与消费者之间的交流和联系的目的 局域网聊天工具是一种面向企业局域网终端使用者的网络沟通工具服务,使用者可以通过安装了即时通信的终端机进行两人或多人之间的实时沟通。 目前,中国市场上的企业级即时通信工具主要包括:通软联合的GoCom、腾讯公司的RTX、IBM的Lotus Sametime等,免费版的有网络信使,传我,汇海集团的汇讯WiseUC等。局域网聊天软件不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。是一种终端连往即时通讯网络的服务。局域网通讯不同于e-mail在于它的交谈是即时的。大部分的即时通讯服务提供了状态信息的特性──显示联络人名单,联络人是否在在线与能否与联络人交谈。 局域网聊天工具,是以企业内部办公,建立员工交流平台为基础,通过系统整合、边缘功能,为企业提供一整套的即时沟通和实时协作的解决方案。由于企业对信息类软件的需求还在“探索”与“尝试”阶段,所以会导致很多系统不能“互通”,这也成了局域网聊天软件的一个使命。当信息软件被广泛使用之后,“互通”接口具备否,将被作为软件被选用的重要条件。 1.2 Java语言 1.2.1 Java的发展历史 在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的)。但事实上Java早在上个世纪90年代初就开始酝酿了。 自1995年到1998年是Java的幼年时期,Sun在Green项目经过了几年的研究,终于在1995年5月23日在SunWorld'95上正式发布Java和Hot Java浏览器但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。因此,sun在之后的几年中推出了推出JDK多个版本。虽然在1998年之前,Java被众多的软件企业所采用,但由于当时硬件环境和JVM的技术原因,它的应用却很有限。当时Java主要只使用在前端的Applet以及一些移动设备中。然而这并不等于Java的应用只限于这些领域。在1998年是Java开始迅猛发展的一年。在这一年中Sun发布了JSP/Servlet、EJB规范以及将Java分成了J2EE、J2SE和J2ME。标志着Java已经吹响了向企业、桌面和移动3个领域进军的号角。 自1998年到2004年是Java的青少年时期,在1998年12月4日。Sun发布了Java的历史上最重要的一个JDK版本:JDK1.2。这个版本标志着Java已经进入Java2时代。这个时期也是Java飞速发展的时期。在Java2时代Sun对Java进行了很多革命性的变化,而这些革命性的变化一直沿用到现在,对Java的发展形成了深远的影响。 2004年至今是Java的壮年时期。在2004年10月,Sun发布了我们期待已久的版本:JDK1.5,同时,Sun将JDK1.5改名为J2SE5.0。和JDK1.4不同,JDK1.4的主题是性能,而J2SE5.0的主题是易用。Sun不仅为J2SE5.0增加了诸如泛型、增强的for语句、可变数目参数、注释(Annotations)、自动拆箱(unboxing)和装箱等功能,同时,也更新的企业级规范,如通过注释等新特性改善了EJB的复杂性,并推出了EJB3.0规范。 在Java发展的十几年的时间里,经历了无数的风风雨雨。现在Java已经成为一种相当成熟的语言了。在这10年的发展中,Java平台吸引了数百万的开发者,在网络计算遍及全球的今天,更是有20亿台设备使用了Java技术。 1.2.2 Java的特点 Java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。   1.简单性   Java语言是一种面向对象的语言 ,它通过提供最基本的方法来完成指定的任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程序。 Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。 2.面向对象 Java语言的设计集中于对象及其接口 ,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法 ,实现了模块化和信息隐藏 ;而类则提供了一类对象的原型 ,并且通过继承机制 ,子类可以使用父类所提供的方法 ,实现了代码的复用。 3.分布性 Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议 ,用户可以通过 URL地址在网络上很方便地访问其它对象。  4.鲁棒性 Java在编译和运行程序时 ,都要对可能出现的问题进行检查 ,以消除错误的产生。它提供自动垃圾收集来进行内存管理 ,防止程序员在管理内存时容易产生的错误。通过集成的面向对象的例外处理机制 ,在编译时,Java提示出可能出现但未被处理的例外 ,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误 ,防止动态运行时不匹配问题的出现。 5.安全性 用于网络、分布环境下的 Java必须要防止病毒的入侵。 Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现 ,这样就防止程序员使用"特洛伊 "木马等欺骗手段访问对象的私有成员 ,同时也避免了指针操作中容易产生的错误。 6.体系结构中立   Java解释器生成与体系结构无关的字节码指令 ,只要安装了 Java运行时系统 ,Java程序就可在任意的处理器上运行。这些字节码指令对应于 Java虚拟机中的表示 ,Java解释器得到字节码后 ,对它进行转换 ,使之能够在不同的平台运行。 7.可移植性 与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时 ,Java的类库中也实现了与不同平台的接口 ,使这些类库可以移植。另外,Java编译器是由 Java语言实现的 ,Java运行时系统由标准 C实现 ,这使得Java系统本身也具有可移植性。 8.解释执行 Java解释器直接对 Java字节码进行解释执行。字节码本身携带了许多编译时信息 ,使得连接过程更加简单。 9.高性能 和其它解释执行的语言如 BASIC、 TCL不同 ,Java字节码的设计使之能很容易地直接转换成对应于特定CPU的机器码 ,从而得到较高的性能。 10.多线程 多线程机制使应用程序能够并行执行 ,而且同步机制保证了对共享数据的正确操作。通过使用多线程 ,程序设计者可以分别用不同的线程完成特定的行为 ,而不需要采用全局的事件循环机制 ,这样就很容易地实现网络上的实时交互行为。 1.2.3 Java与Internet Java语言取得成功的领域之一就是网络(其他语言)数页代码---->(Java)一条语句。TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层).大多数基于internet的应用程序被看作TCP/IP协议的上一层. 如 : ftp, http, smtp, pop3, telnet, nntp等。 IP地址:TCP/IP网络中的每台计算机都有唯一的地址--IP地址. 在Java中,有一个用来存储internet地址的类叫InterAddress. Java提供的网络功能有三大类: URL, Socket, Datagram. 1、URL是三大功能中最高级的一种,通过URL Java程序可以直接送出或读入网络上的数据. 2、Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道. 3、Datagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上 1.3 Socket编程 1.3.1 关于TCP/IP协议 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。TCP协议是网络通信的基石,对此,Java专门提供了Socket的类库,在其中抽象出TCP协议通信的常用方法。 1.3.2 服务器和客户机 客户机又称为用户工作站,是用户与网络打交道的设备,一般由微机担任,每一个客户机都运行在它自己的、并为服务器所认可的操作系统环境中。服务器指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。服务器的主要任务是侦听建立连接的请求,这是由我们创建的特定服务器对象完成的。而客户机的任务是试着与一台服务器建立连接,这是由我们创建的特定客户机对象完成的。一旦连接建好,那么无论在服务器端还是客户机端,连接只是魔术般地变成了一个IO数据流对象。从这时开始,我们可以象读写一个普通的文件那样对待连接。所以一旦建好连接,我们只需使用自己熟悉的IO命令即可。这正是Java联网最方便的一个地方。 2 需求分析 2.1可行性分析 (1)经济可行性:本系统无需数据库服务,由于聊天室使用人数有限,无数据库完全可以应付,所以成本就无需考虑了。 (2)操作可行性:只要一台以上的计算机连在同一个局域网上,本系统就可以使用了,所以操作简单,不存在问题。 (3)技术可行性:本系统采用java语言,是基于CS架构的。开发这个软件需要开发者对socket编程和java Swing 及多线程技术比较熟悉。由于本人对java应用水平有限,希望不足之处可以得到谅解。 综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。 2.2系统功能需求 本系统主要通过客户端、服务器端来体现聊天系统的基本功能。 (1)服务器端 1.处理用户注册 2.处理用户登录 3.处理用户发送信息,服务器监控聊天内容 4.处理用户得到信息 5.处理用户退出 8. 服务器踢人。 9. 保存服务器日志。 (2)客户端 1.用户登录界面及结果 2.用户发送信息界面及结果 3.用户得到信息界面及结果 4.用户退出界面及结果 2.3 系统性能需求 实用性:为局域网聊天提供方便,有效进行作业管理。 操作简单:本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。 安装使用简便:服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。 适应性:应该能广泛应用于不同类型的企事业单位。系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。 3 概要设计 3.1运行环境 安装有JRE1.5以上的windows系统(推荐winXP,winVista或win7) 3.2软件功能框架图 3.2.1服务端功能框架图 这个图主要介绍服务端的功能,主要包括测试端口、保存配置、服务器管理、用户管理、日志管理。如图1所示。 图3-1服务端功能框架图 3.2.2客户端功能框架图 这个图主要介绍了客户端的功能,主要包括设置IP、设置端口、修改密码、发送私聊信息、发送公聊信息、显示公告、显示在线用户。如图2所示。 图3-2客户端功能框架图 4 详细设计 4.1流程图 4.1.1服务端 4.1.1.1服务器登录流程图 当打开服务器登录主窗体时,需要测试端口是否可用,如可用则保存配置文件,若保存成功则进入服务器界面。如图3所示。 图4-1服务端登录流程图 4.1.1.2服务器管理流程图 当进入服务器界面时,使用者可以开启服务器,监听连接请求,处理用户发送过来的消息,当点击右上角的推出按钮时退出并关闭所有连接。如图4所示。 图4-2 服务器管理流程图 4.1.2客户端 在客户端,用户首先进入登录窗体,如果IP、端口号、用户名、密码都正确,则进入聊天窗口,否则给出相应的提示信息。进入聊天窗口后可以修改密码、发送聊天信息、显示公告和在线用户列表。如图5所示。 图4-3 客户端流程图 4.2编写服务器端程序 4.2.1通讯数据包说明(格式说明,包类型说明) 格式说明 package pub; importjava.io.Serializable; // 封装数据的包,它现了java.io.Serializable接口 public class QQPackage implements Serializable{ private String from;// 消息发送者 private String to;// 消息接收者 privatePackTypepackType; //包类型 private Object data;// 数据包 } 包类型说明 package pub; //包类型 publicenumPackType { loginApply,// 登陆申请 loginSuccess,// 登陆成功 loginFail,// 登陆失败 privateChat, 私聊 publicChat,// 群聊 post,// 公告 onlineuser,// 在线用户列表 enforceDown,// 强制下线 stopServer,// 停止服务 userOffline,// 用户下线 resetPassword,// 修改密码 } 4.2.2 问题陈述 1. 用户注册。 2. 能够允许注册过的用户登录聊天界面并可以聊天。 3. 能够接受私聊信息并发送给特定的用户。 4. 服务器运行在自定义的端口上6000. 5. 服务器监控用户列表和用户聊天信息。 6. 服务器踢人,发送通知。 7. 服务器保存日志。 4.2.3 解决方案 4.2.3.1服务器登录配置 Login_JFram这个类是一个服务端登录窗体,在其中要读取config.ini中的配置信息,测试端口是否可用,若可用则创建一个serversocket,并用login_button_listener这个类去监听按钮并作出响应。 4.2.3.2服务端设计 QQ_Server_JFrame是服务器主窗体,其中有三个成员变量分别是Sermanager_JPanel(服务器管理面板)、UserManager_JPanel(用户管理面板)、LogsManager_Panel(日志管理面板)。 在服务器管理面板中,有一个ServerManager_Button_Listener负责监听按钮。 当按下启动服务器按钮时,更改图片,写启动服务日志,并创建一个服务端监听客户连接的线程(Accept_Thread),并启动。在此线程中会根据用户的状态创建一个用于读取的线程(Server_Read_Thread),它会根据包类型做出不同的操作。 当按下停止服务按钮时,停止服务,更改图片,写停止服务日志,修改用户状态,刷新用户列表,通知用户下线,发stopServer包 当按下强制用户下线按钮时,要判断用户ID,封装强制下线包,关闭强制下线用户的线程、流。 在用户管理面板中,用一个用户管理面板按钮的监听器(UserManager_Button_Listener)完成查询用户,显示在线用户列表的显示,添加新用户,删除用户,修改资料,重设所有密码,重设所选密码的功能。 当按下用户添加按钮和修改资料按钮时创建一个用户信息的对话框,调用UserInfo_JDialog(UsersManager_JPanelusersManager_JPanel, QQ_Server_JFrameqq_Server_JFrame, int kind)方法。这个方法会判断操作类型,生成一个存放对话框内容的JPanel,初始化编号、密码、注册时间,实例化UserInfo_Button_Listener(添加用户和修改用户对话框的监听器), 当按下查询按钮时,获取用户id和姓名,调用UserDaoImpl(访问数据的方法类)的selectList(Stringsid, Stringsname, int state)方法,这个方法通过判断state将移除密码后的Vector返回显示。 当按下删除用户按钮时,调用UserDaoImpl的deleteUser(String id)方法,删除用户数据文件中的对应的用户信息。 当按下重置所有用户密码时,调用UserDaoImpl的resetAllPWD()方法,这个方法会读取用户数据文件,选出所有用户的密码,并设置成123456。 当按下重置所选用户密码时,调用UserDaoImpl的resetPWD(String id),在这个方法中会调用resetPWD(String id,String newPWD)方法,将所选用户的密码重置为123456。在日志管理面板中生成一个日期选择面板、一个显示历史记录的面板、一个JComboBox选择事件的监听器combobox_listener和一个日志面板的按钮监听器button_listener,在combobox中定义了一些JComboBox的选项被选择时所做出的响应。如获得月的下拉框要判断是大月(31天)还是小月(30天),是否是闰年,获得年的下拉框根据月份(是否为2月,若是2月,若是闰年则为29天,否则28天)作出处理。在button_listener中写义了一些按钮按下时做出的响应,主要是查询日志文件,判断是否有该天的日志,若有是否有需要的关键字,若有返回读取到的信息。若没有返回对应的提示信息。 4.3编写客户端程序 4.3.1通讯数据包说明(格式说明,包类型说明) 与服务器端相同,此处省略 4.3.2 问题陈述 1. 配置端口,ip。 2. 修改密码。 3. 发送即时消息。 4. 聊天记录 5. 获取公告,用户在线列表。 6. 退出。 4.3.3解决方案 首先构造一个登录窗体QQ_Login_JFrame,在这个类中生成一个显示在登录窗体上的有图片的JLable、一个登录区域的JPanel(输入用户编号和密码)和一个按钮区域的JPanel(设置、登录、取消按钮)以及一个按钮事件的监听器QQ_Login_Button_Listener,在这个监听器中定义了各个按钮按下时做出的响应, 当按下取消按钮时,退出系统,system.exit(0); 当按下设置按钮时,通过调用.QQ_Login_JFrame.getButton_NetOption()获得网络设置面板,如果这个面板是显示状态就设置它为不可显示,如果这个面板是不显示状态就设置它为显示。 当按下登录按钮时,首先获取ip、断后号port,并判断是否为空,是否合法(代码如下 if(!IP.matches("^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$")) {qq_Login_JFrame.getLabel_NetOption().setText("IP不合法,请重新输入"); return;}) if(!port.matches("\\d{4,5}")){qq_Login_JFrame.getLabel_NetOption().setText("端口号应为1024~65535之间的整数");return;} int p = Integer.parseInt(port); if(p<1024 && p>65535){qq_Login_JFrame.getLabel_NetOption().setText("端口号应为1024~65535之间的整数");return;}),然后判断用户名和密码是否为空。若四项都合法,实例化一个socket=new socket(ip,port);然后获取数据流(objectOutputStream),封装登录请求包( Vector<String>IDAndPsw = new Vector<String>(); IDAndPsw.add(ID); IDAndPsw.add(psw); QQPackageqqPackageCheck = new QQPackage(); qqPackageCheck.setPackType(PackType.loginApply); qqPackageCheck.setData(IDAndPsw); objectOutputStream.writeObject(qqPackageCheck); objectOutputStream.flush();) //收取服务器返的信息 QQPackageqqPackageReturn = null; qqPackageReturn = (QQPackage)objectInputStream.readObject(); PackTypepackType = qqPackageReturn.getPackType(); String returnInfo = qqPackageReturn.getData().toString(); //登录失败 if(packType == PackType.loginFail){ JOptionPane.showMessageDialog(qq_Login_JFrame, returnInfo + "累计三次登录失败后,程序将退出,您还可以操作:" + (3-wrongCount) + "次"); //登录成功 }else if(packType == PackType.loginSuccess){ // 把当次输入的号码增加到文件,实现记录输入号码的功能 qq_Login_JFrame.autoAppendID(); qq_Login_JFrame.dispose(); newQQ_Chat_JFrame(socket,qqPackageReturn,objectOutputStream,objectInputStream); 这样经进入了聊天主窗口(QQ_Chat_JFrame)。 在QQ_Chat_JFrame中生成一个客户端读取线程,在这个线程中会根据获取的不同包的不同类型做出不同的响应。具体代码如下: // 聊天包 if (packType == PackType.publicChat) { String message = object.toString(); qq_Chat_JFrame.getTextArea_Dsp().append(message); qq_Chat_JFrame.getTextArea_ChatLogs().append(message); // 在线用户列表包 } else if (packType == PackType.onlineuser) { DefaultListModeldefaultListModel = (DefaultListModel) qqPackageRec.getData(); qq_Chat_JFrame.getList_OnlineUsers().setModel(defaultListModel); qq_Chat_JFrame.validate(); // 服务器停止包 } else if (packType == PackType.stopServer){ String message = qqPackageRec.getData().toString(); JOptionPane.showMessageDialog(qq_Chat_JFrame, message); qq_Chat_JFrame.dispose(); System.exit(0); // 公告包 } else if (packType == PackType.post){ String message = qqPackageRec.getData().toString(); qq_Chat_JFrame.getTextArea_Notice().setText(message); // 下线包 } else if (packType == PackType.enforceDown){ String message = qqPackageRec.getData().toString(); JOptionPane.showMessageDialog(qq_Chat_JFrame, message); System.exit(0); // 密码修改回复包 } else if (packType == PackType.resetPassword){ String message = qqPackageRec.getData().toString(); if("密码修改成功!请牢记新密码!".equals(message)){ qq_Chat_JFrame.getResetPassword_JDialog().getLabel_Message().setText(""); JOptionPane.showMessageDialog(qq_Chat_JFrame, message); qq_Chat_JFrame.getResetPassword_JDialog().dispose(); }else{ qq_Chat_JFrame.getResetPassword_JDialog().getLabel_Message().setText(message); } } 在QQ_Chat_JFrame中生成一个具有公告信息和在线用户列表的JSplitPane(包含一个Jlist选中事件的监听器类. QQ_Chat_List_Listener),生成一个聊天为主功能的JPanel(包含一个按钮监听类QQ_Chat_Button_Listener),生成一个聊天记录面板,它默认是不可见的。 Jlist选中事件的监听器类. QQ_Chat_List_Listener定义了列表选中时做的响应,将接收者的标签设置成列表选中的项。 按钮监听类QQ_Chat_Button_Listener根据各个按钮做出不同的响应: 当按下聊天记录按钮,如果聊天记录面板使显示状态,设置为不可显示状态,并调整此面板的大小,如果聊天记录面板使不显示状态,设置为可显示状态,并调整此面板的大小。 当按下发送按钮 获取选中的用户,并判,断是否为空是否为自己,判断消息是否为空,是否太长,如果都满足,则更具是否私聊封装不同的消息包,然后发送。 当按下关闭按钮 发送退出消息包,关闭系统 当按下修改密码按钮,构造一个具有指定拥有者的修改密码对话框,并添加一个按钮事件的监听器类,如果点击确认按钮,就验证两个新密码是否一样,若一样就发送修改密码包。 5 系统实现 5.1服务端 5.1.1服务器启动配置 这个窗体主要作用是测试端口是否可用,如果可用则会把端口号保存在config.ini文件中。点击进入服务器按钮则会进入服务主窗体。如图6所示: 图5-1服务器配置 5.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服