基于java的即时通信软件设计与实现 毕业论文.doc

上传人:小小飞 文档编号:3920581 上传时间:2019-10-10 格式:DOC 页数:49 大小:770.52KB
返回 下载 相关 举报
基于java的即时通信软件设计与实现 毕业论文.doc_第1页
第1页 / 共49页
基于java的即时通信软件设计与实现 毕业论文.doc_第2页
第2页 / 共49页
基于java的即时通信软件设计与实现 毕业论文.doc_第3页
第3页 / 共49页
基于java的即时通信软件设计与实现 毕业论文.doc_第4页
第4页 / 共49页
基于java的即时通信软件设计与实现 毕业论文.doc_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《基于java的即时通信软件设计与实现 毕业论文.doc》由会员分享,可在线阅读,更多相关《基于java的即时通信软件设计与实现 毕业论文.doc(49页珍藏版)》请在三一文库上搜索。

1、学 号2009222413分类号TP311本科生毕业论文(设计)题目: 基于java的即时通信软件设计与实现 院 (系) 电子与信息工程系 专 业 电子信息工程 班 级 2009级2班 学 生 姓 名 指导教师(职称) 提 交 时 间 二一三年五月 版权声明任何收存和保管本论文各种版本的单位和个人,未经本论文作者同意,不得将本论文转借他人,亦不得随意复制、抄录、拍照或以任何方式传播。否则,引起有碍作者著作权之问题,将可能承担法律责任。原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰

2、写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明,本声明的法律结果由本人承担。论文作者签名: 日期: 年 月 日安康学院本科生毕业论文(设计) 基于java的即时通信软件设计与实现李 毅(安康学院电子与信息工程系,陕西安康,725000) 摘 要 计算机网络技术高速发展的今天,即时通讯越来越方便,使得通信软件也变得越来越重要,所以本文做了一个即时通信软件,该软件主要是基于Java平台,采用C/S结构客户端和服务器端通过Socket发送和接收消息,并遵循java的面向对象的设计原则。该软件使用MyEclipse开发工具,服务器端的设计和实施过程中,使用多线程技术,

3、它可以在一个程序中同时运行多个不同的线程,执行不同的任务,大大提高服务器资源的利用率。数据库管理系统用Oracle完成,并通过JDBC桥访问数据库。聊天系统将完成好友登陆、验证登陆、多人互相聊天、新用户注册、添加好友、删除好友、修改个人资料等功能。关键词 即时聊天;系统;Java;C/S Instant communication software Design and Plementation Based on JavaLI YI(Department of Electronic and Information Engineering, Ankang University, Ankang,

4、725000)Abstract With the rapid development of computer network technology nowadays, instant communication becomes more and more convenient. So software for communication is more and more important at the same time. This paper is about a instant communication software. The software is mainly based on

5、 Java platform. using C/S structure, and its client and server receive messages through the Socket to send, objecting the principles of Java. Whats more, My Eclipse is used in the software as the development tools, and in the process of design and implementation, the server uses the multi-threading

6、technology, which can be a number of different threads running simultaneously in a program, making it perform different tasks, and greatly improving the server resource utilization. Database management systems, completes with Oracle, and make an access to the database through the JDBC bridges. Chat

7、system has the function of friends logining. Verifying logining, multi-chat with each other, and the new user registration, add friends, delete friends, modify personal information and other functions.Key Words Instant Messager; System; JAVA; C/S目 录第一章 绪 论11.1 引言11.2 课题研究背景11.3 系统实现的关键技术21.4 本文工作及内容

8、安排3第二章 系统的需求分析52.1 项目设计的需求描述52.2 服务器端需求52.3客户端需求52.4 对于发送的消息的一些协议需求5第三章 系统设计73.1 软件设计流程73.2 即时聊天系统的实施原理73.2.1 工作方式和技术原理73.2.2 通讯方式83.3 功能模块划分93.3.1 服务器端93.3.2 客户端9第四章 数据库概要设计114.1 系统实体及实体关系图114.2 用户表124.3 好友表(friends)124.4 在线状态表(logtype)134.5 登陆表134.6 离线信息表13第五章 详细设计155.1 服务器端的设计与实现155.2 用户注册模块165.3

9、 登陆模块175.3.1登录模型图175.3.2登录验证175.4 添加好友、删除好友、修改个人资料模块205.5 发送和接收消息模块215.5.1 聊天流程215.5.2发送和接收消息225.6 关闭客户端23第六章 系统测试256.1 系统测试案例256.2 测试结果和分析25第七章 总结与展望29参考文献30致 谢31附 件32第一章 绪论第一章 绪 论1.1 引言随着科学技术的发展,人类目前已经处于信息时代。人和人之间的信息交流具有了多种途径。不仅可以面对面的直接交流,还可以借助于一些先进的工具如电话、网络等实现远程交流。人们最为熟悉的QQ就是实现远程交流的应用典范。针对企业的专业化即

10、时通讯也迅速成长,具备安全性和多用途的互动办公通讯软件平台随之诞生,它们大都集成文字、声音、视频、屏幕、即时邮件、文件共享与下载的诸多功能,能满足用户的各种需要。并且即时通讯技术有将无线通讯融入计算机网络的趋势,其前景是非常光明的。本课题研究的是支持内部网络交流的系统网络即时通讯系统。1.2 课题研究背景即时通讯系统是一种非常便捷的网络通讯技术,利用互联网建立起网络虚拟环境,通过计算机键盘或无线设备在网络上进行实时信息交流,成为一种提供公共通讯、商务通讯及商务合作的新媒介,同时也弥补了传统通讯形式的不足,尤其是电子邮件及语音通信方面的不足。即时通讯工具在实现传输视频与音频信息,使协作成员可以远

11、距离进行直观、真实的文字交流的同时,利用多媒体的技术,它还可以帮助使用者对工作中各种信息进行处理。随着即时通信普及,全球即时通信用户的数量也不断增长。目前即时聊天系统种类众多,功能也较为齐全,但MSN、QQ等公共消息系统,由于聊天对象及内容的不可控,若在企业内部使用,可能会降低工作效率。本文所研究的即时通讯系统的应用目标定位于企业内部网络,将自己的服务器端安装在企业内,并且人员的创建是由系统管理员来完成,因此很好的解决企业或单位的信息沟通及协同问题,提高工作效率。在该系统中,企业内部员工可以利用该通讯系统随时随地发送文字消息,系统包括客户端程序和服务器端程序,支持局域网和Internet。企业

12、内部员工之间可以在内部网覆盖的任何地点、任何时间进行即时交流,帮助实现企业内部协同工作。即时通讯带给了更大的互动性,人们在交流彼此的看法、意见时,发现采用你来我往的方式达到的效果最为明显。这就体现了互动性。通过使用及时通讯系统,大家不需要借助其它额外的工具,就可以在线实时地交流工作,即时通信软件是网络软件的一个重要应用,构造的成本低、实时性好、网上交流平台便捷的特点决定了它的普及性,使其成为了在互联网上和他人联系的重要方式,应用于企事业单位内部的即时通讯软件,可以推动政府机构、大型事业单位信息化的建设!因此开发该类型即时通讯软件也就具有重要的意义。1.3 系统实现的关键技术 (1) 系统开发语

13、言选择经过认真的讨论分析,最终决定选择纯面向对象的Java语言来完成本项目的设计和实现,下面对Java语言作简要介绍。Java是一种简单、多线程、安全、容易适用、可移置、面向对象、高性能的语言。具有以下特点:面向对象:面向对象技术可以提高模块化程度和重复使用率,缩短软件开发时间降低开发成本。安全性:Java提供了许多安全机制,是一种能应用于网络和分布环境下的程序设计语言。多线程:Java具备内建的多线程功能使各线程并发、独立执行提高系统的运行效率。平台独立:平台独立是指程序不受操作平台限制可以应用于各种平台。Java源程序经过编译后能够生成字节码文件,字节码和具体的计算机无关。计算机安装能解释

14、执行字节码的JVM就能执行字节码文件实现了Java的平台独立性。执行效率: Java程序的开发通常需要经过编写源程序、编译生成字节码和运行三个过程。这一编译过程同C/C+的编译有些不同,C编译器编译时,该代码是为在某一特定硬件平台运行而形成的,在编译过程中,编译程序通过查表将所有对符号的引用转换为相应的内存偏移量,以保证程序运行。而Java编译器却不将对方法和变量的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。Java应用程序的开发周期包括编译、下载、解释和执行几个部分。这样

15、就有效的保证了Java的运行效率。(2) 系统架构经过分析,我采用的软件架构是C/S架构, C/S就是指客户机/服务器模式,客户机向服务器发出数据请求,服务器将数据进行计算,计算完毕后,将计算结果返回给服务器,形成客户端和服务器之间的交互。具体的讲,就是在主机终端模式中,把原来全部集中在主机部分的任务一分为二。一部分是仍然保留在主机上的负责集中处理和汇总运算,成为服务器;而另一部分是下放到终端的部分,主要负责为用户提供友好的交互界面,称为客户机。相对于以前的模式,C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位,一般在运算能力较强的计算机上

16、安装服务器端程序,而在一般的PC上安装客户机程序,这样就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机的负担,也增加了系统对用户的响应速度和响应能力,从而提高工作效率。这种模式的优点充分利用了客户机的性能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此在物理上客户机和服务器两端是易于扩充的。(3) 信息通信技术本系统实现信息通信主要是用Socket来实现的,Socket是网络编程中最常见的客户/服务器模式。可以想象一条虚拟的电缆工作在两台计算机之间,两台计算机都有一个Socket,也就是端口,电缆插在两台计算机的Socket上,一台

17、计算机上的Socket同另一台计算机通话创建一个通信信道,我们可以利用这个信道在两台机器之间发送数据。用该模式编程时,服务器端有一个进程或多个进程在指定的端口等待客户来连接,一旦连接成功,便按设计的数据交换方法和格式进行数据传输。客户端向服务器端提出连接请求,连接之后进行通信。1.4 本文工作及内容安排本文主要是通过java语言以及局域网实现一个QQ聊天系统。第一章介绍了论文的课题背景,阐述了课题的目的与意义,概述了项目设计实现所要采用的一些关键技术;第二章对系统的需求进行分析,主要包括即时聊天消息的功能需求,即时消息的协议需求,即时信息加密和鉴别等通信息安全方面的需求;第三章介绍了系统设计,

18、即时聊天系统的实施原理,软件设计流程,功能模块划分;第四章介绍了数据库的概要设计;第五章详细设计,服务器端的设计与实现,注册处理模块,客户端的设计与实现,以及聊天信息发送与接收;最后一章对本文所做的工作进行全面的总结,并指出了工作中的不足。3第二章 系统的需求分析第二章 系统的需求分析2.1 项目设计的需求描述 设计一个基于JAVA的网络即时通信系统,在通用计算机网络上实现信息传递,包括基本的文本消息传递,实时获取联系人状态,对常用联系人进行管理等。主要考虑以下基本功能,注册并登录服务器,验证用户,获得用户列表,用户运行客户端程序后,服务器端程序在局域网上运行,与其他用户进行点对点的实时消息通

19、信服务。2.2 服务器端需求处理用户登录,当用户到达登陆界面时,用户发送账号、密码等信息进行分装,服务器接受到用户发送的登陆账号、密码;验证用户登录,服务器将用户登陆发送的账号和密码,与数据库中已有的用户进行匹配,如果能能找到,那么就验证成功,找不到该用户,验证失败;处理用户发送信息和处理用户得到信息,用户可以通过对话框和自己的好友进行文字类的交流,可以发送消息,同时也可以接受好友消息;处理用户退出,关闭服务器等。2.3客户端需求用户注册界面及结果,可以将用户的姓名、性别、年龄等信息分装,添加到用户数据表中,然后用户可以根据注册的账号、密码进行登录;用户登录界面及结果,用户进入登陆界面,填写自

20、己的账号、密码,然后将其提交给服务器;用户验证界面及结果,根据服务器验证的结果,验证成功,用户可以进入登陆成功界面,验证失败,用户会得到一个登陆失败界面;用户发送信息界面及结果,用户可以双击自己的好友,然后弹出一个对话框,可以和自己的好友进行交流;用户得到信息界面及结果,当好友给自己发送消息时,用户自己的好友界面端,好友头像闪动,然后点击好友头像上,就可以接受到好友的消息。2.4 对于发送的消息的一些协议需求发送的消息必须至少使用一种消息格式,格式必须包含一个让接收者可以回消息的地址、发信者和即时收件箱的标识,以及允许对信息有效负载的编码和鉴别(非ASCII内容),而且即时消息格式必须提供扩展

21、和注册即时消息格式的模式机制。这种模式机制,可以保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。即时通讯协议,是指参与的双方或者多方通讯时所达到的共识。协议必须是双方或者多方参与的,一方单独完成的就不算协议。这样在协议动作的过程中,双方必须交换信息,包括控制信息、状态信息等等。这些信息的格式必须是协议参与方同意并且遵循的。好的协议要求清楚、完整,每一步都必须有明确的定义,并且不会引起误解;对每种可能的情况必须规定具体的动作。本文的即时通讯协议必须提供方法保证即时消息的置信度,让即时信息未被监听、破坏、重排序或者回放,同时还必须保证即时消息被正确的实体阅读。55第三章 系统设计第三

22、章 系统设计3.1 软件设计流程因为该系统其需求是十分明确的,所以该系统的开发流程采用瀑布模型进行设计,分为几大步骤:先进行需求分析,再是系统设计,然后是详细设计与编码,其次是软件的测试,最后是软件的运行和维护。在实际过程中这些步骤经常是重叠和彼此间有信息交换,它不是一个简单线性过程,而是包括开发步骤的多个反复。如图1所示。需求分析系统设计软件运行与维护详细设计与编码软件测试图1 即时通讯系统开发瀑布图3.2 即时聊天系统的实施原理3.2.1 工作方式和技术原理第一步,用户输入自己的用户名和密码登录服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户的IP地址、客户的姓名及时

23、间,然后返回用户登录成功的标志。第二步,根据用户存储在服务器上的好友列表,服务器将用户在线的相关信息发送给也同时在线的好友的PC机,这些信息包括在线状态、IP地址等,好友的客户端收到此信息后将其显示在客户端界面上。第三步是服务器把用户存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址等信息。用户应用流程图如图2所示。用户登陆身份验证失败成功与好友聊天关闭聊天窗口关闭客户端新用户注册注册验证注册失败成功失败登陆失败登陆成功图2 用户体验流程图3.2.2 通讯方式(1)在线直接通讯如果用户想与他的在线好友用户聊天,他将直接通过服务器发送过来的用户好友的IP地址、

24、TCP端口号等信息,直接向用户好友的PC机发出聊天信息,用户好友的客户端软件收到后,头像闪动,双击弹出对话框,显示在屏幕上,然后用户好友再直接回复到用户的PC机,这样双方的即时文字消息就不在服务器中转,而是直接通过网络进行点对点的通讯。(2)在线代理通讯用户与用户好友的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢,服务器将会主动提供消息中转服务,即用户和用户好友的即时消息全部先发送到服务器,再由服务器转发给对方。3.3 功能模块划分3.3.1 服务器端服务器端完成至少3大功能:建立连接、存储数据和监听客户。这3大功能的具体含义如下:(1)建立一个ServerSocket连接,不断侦

25、听是否有客户端连接或者断开连接。(2)服务器端是一个信息发送中心,所有客户端的信息都传到服务器端,再由服务器根据要求分发出去。(3)数据库数据操作包括将用户信息存储到数据库等。服务器端功能结构如图3。服务器端建立连接存储数据监听客户图3 服务器端功能结构图3.3.2 客户端客户端要完:用户登录、读取用户、通信交流这些功能。这些功能的含义如下:(1)用户登录:客户端与服务器端建立通信信道,向服务器端发送信息,完成用户登录。(2)通信交流:客户端可完成的信息的编辑、发送和接收等功能。该即时聊天工具按如下过程完成通信,客户向服务器登陆,告知服务器该客户监听某主题;客户登陆之后,向服务器发送消息;服务

26、器再把消息发送给所有监听此主题的客户。客户端功能模块结构如图4客户端用户交流读取用户用户登陆用户登陆验证用户注册验证用户注册 图4客户端功能模块图43第四章 数据库概要设计第四章 数据库概要设计4.1 系统实体及实体关系图经过本人对系统数据信息的分析,设计了有用户实体、好友列表实体两个实体。用户实体属性包括了用户编号、昵称、密码、签名、性别、生日、在线头像、离线头像、消息头像等;好友列表实体包括了功能ID、用户编号、好友编号等属性。用户好友实体和好友列表实体E-R图如图5。好友用户qq编号编号消息头像生日在线头像离线头像密码昵称签名性别好友编号自己编号拥有1n图5 实体关系图根据实体关之间系,

27、数据库设计了用户表(登录用户)、好友表(friends),另外为了方便编写用户的登陆状态和直观的表示服务器端,又添加了在线状态表(logtype)和登陆表。用的数据库是oracle10,对数据库表进行操作的软件工具是PLSQL Developer,下面将对这五张表进行详细说明。4.2 用户表 用户表主要是记录每个用户自己的信息,包括自己的qq号、昵称、密码、签名、性别、生日、在线头像、离线头像、消息头像等这些字段。其中qqnum和qqsex为数字类型,qqname、qqpass、qqdesc为字符串类型,而在线头像、离线头像、消息头像是大数据类型,生日是日期类型,主键是qqnum。主键为了标识

28、一条记录的唯一性,保证每条记录应当具备惟一性,一张表里只有一个主键,而且主键不能为空,如表1。表1 用户信息表标识字段类型精度是否主键是否外键 编号qqnumnumber10是否昵称qqnamevarchar220否否密码qqpassvarchar220否否签名qqdescvarchar2100否否性别qqsexnumber1否否生日qqbirthdaydate否否在线头像qqolpicblob否否离线头像qqofpicblob否否消息头像qqmespicblob否否4.3 好友表(friends)好友表主要反应的是该qq好友和好友之间的关系。friid、qqnum、frinum都是数字类型的

29、。其中friid是主键,qqnum是外键。外键表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。主键与外键用于区分不同的记录便于查询。外键又称作外关键字。一张表中可以有多个外键,但这些外键必须是其它表的主键,如表2。表2 好友表标识字段类型精度是否主键是否外键功能IDFriidnumber10是否编号Qqnumnumber10否是好友编号Frinumnumber10否是4.4 在线状态表(logtype) 在线状态表主要是反应用户的登陆状态的表。Typeid是数字类型,typename、typedesc是字符串类型。其中初

30、始化数据时,10代表离线,11代表隐身,12代表在线,如表3。表3 在线状态表标识字段类型精度是否主键是否外键状态IDtypeidnumber2是否状态名称typenamevarchar210否否状态描述typedescvarchar2100否否4.5 登陆表 登陆表主要是将登陆的用户信息反映到服务器端,服务器端显示每个登陆的用户信息。其中qqnum、typeid是字符类型的,logip是字符串类型的,logtime是日期类型的,而且qqnum即时这张表的主键,也是这张表的外键,同时typeid也是这张表的外键,如表4。表4 服务器端登陆表标识字段类型精度是否主键是否外键编号qqnumnumb

31、er10是是状态IDtypeidnumber2是登陆IPlogipvarchar215登陆时间logtimedate4.6 离线信息表 离线表主要是方便用户不在线时,将离线信息存储在这个表中,当用户登录时,将信息显示给用户。其中ID是number类型的,fromuserid、touserid、message是字符串类型的,同时编号ID是这张表的主键。如表5。表5 离线信息表标识字段类型精度是否主键是否外键编号Idnumber10是用户账号fromuseridvarchar210好友账号touseridvarchar210留言信息messagevarchar2100第五章 详细设计第五章 详细设

32、计5.1 服务器端的设计与实现C/S模式下的系统开发,很显然服务器端程序的设计是非常重要的。下面就服务器端的相关程序模块进行设计,并一定程度上实现了相关功能。使用SeverSocket s=newServerSocket(端口)语句在端口创建套接口;使用new ServerThread(socket)语句创建新的线程。服务器类调用ServerThread类,而每个ServerThread实体就是一个独立的线程,刚好对应于客户端的连接请求响应线程。每一个客户登陆,如果验证成功,将会显示在服务器端。为了更好的显示后台服务器端,设计了相应的服务器端图形界面,如图6。图6 服务器端界面 当服务器打开时

33、会同时监听登陆线程(LoginListener)类、监听消息线程(MesListener)类这三个线程。登陆线程(LoginListener)类主要是负责服务器的用户登陆显示、发送给登陆用户好友列表、发送给登陆用户其在线好友,通知上线信息等。在服务器的登录表注册登录,并更新登陆显示的主要代码为: win.getDao().addLoginUser(lm); win.setTmodel(win.getDao().getLoginModel(); win.getTab().setModel(win.getTmodel();发送给登陆用户好友列表的主要代码为:ArrayList friList=wi

34、n.getDao().getFriendsList(lm.getQqnum(); SendModel.sendFriList(lm, friList);发送给登陆用户留言 MesModel mm=win.getDao().getmesModelByID(lm.getQqnum(); if(mm!=null)SendModel.sendMes(mm, lm.getQqip(), FinalFile.CLI_MES_PORT);win.getDao().deleteMes(lm.getQqnum();5.2 用户注册模块当用户使用Client界面,点击注册账号,用户要把个人资料填写完,此时有一个注

35、册类线程开启,同时验证用户填写的个人资料是否合法。如果合法,将注册的信息插入到用户表用户中,同时还会将申请的账号返回给用户,用户可以通过这个账号和自己注册的密码进行登录。如果不合法,系统拒绝申请,返回到登陆界面。注册模块图如图7。用户注册注册规范注册不规范用户注册验证返回给用户一个编号注册不成功界面图7 用户注册模块图注册好友的方法如下所示。public void LoginId( String qqname,String qqpass,String qqdesc,int qqsex,String qqbirthday) String sql=insert into qquser values

36、(sq_user.nextval, +qqname+,+qqpass+,+qqdesc+,+qqsex+,+to_date( +qqbirthday+ ,yyyy-mm-dd),null,null,null);dbutil.executeDML(sql);5.3 登陆模块5.3.1登录模型图当用户使用账号和密码进行登录,这时候有一个登录线程将用户发过来的用户信息和后台数据库里的用户信息进行比对。如果用户的账号和密码与之完全匹配,则用户成功登录,并且返回给用户登录账号的好友列表、好友资料、好友状态。如果不匹配,服务器则告知登陆的用户登录失败。用户登录活动图8。登录用户登陆失败登陆成功验证登陆 返

37、回到登陆失败界面面显示好友界面图8 登陆模型图5.3.2登录验证利用JFrame类写一个登陆界面类(ClientFrame),在登陆界面类给所有的按钮添加监听事件类(LoginFrameHandler)。点击登陆进入验证登陆环节,将登陆界面获取的登陆账号、密码、状态全部用一个登陆用户类(LoginModel)分装起来,然后写一个方法,根据获取的账号和密码,从数据库中查找,如果能找到,那么说明有这个用户,用户进入登陆成功,显示好友界面这一环节;如果根据账号和密码,从数据库中找不到该用户,那么说明密码和账号有问题,这时提示输入密码和账号有问题,请关闭当前提示,请重新登陆。实现验证登陆功能方法的代码

38、如下。public boolean isEnter(LoginModel lm)String sql=select qqnum from qquser where qqnum=+lm.getQqnum()+ and qqpass=+lm.getQqpass()+;dbutil.setSet(dbutil.executeQuary(sql);try if(dbutil.getSet().next()return true; catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finallydbu

39、til.closeAll();return false;发送登陆信息的代码方法如下。public static void sendLogin(LoginModel lm) try socket=newSocket(FinalFile.SER_IP, FinalFile.SER_LOGIN_PORT); objout = new ObjectOutputStream(socket.getOutputStream(); objout.writeObject(lm); catch (UnknownHostException e) / TODO Auto-generated catch blocke.

40、printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); finally closeAll();如果上面的验证登陆成功后,那么就进入登陆成功这一环节,此时用JFrame类写一个客户端好友界面(ClientFrame),在这个好友界面里添加好友模型(FriendPanel),获取头像、姓名、签名。并在好友界面里添加监听好友模型线程类(FriListListener)、好友状态改变线程类(ChangeFriTypeListener)、以及消息线程(MesListene

41、r)。好友模型线程是为了获取好友的信息;好友状态改变线程是为了监听好友的装太多改变;消息线程是为了获取好友的消息。好友模型线程(FriListListener)类主要是显示好友列表到界面、并刷新好友列表界面等功能。实现这一功能的主要代码如下所示。ArrayListfriList=(ArrayList)objin.readObject();win.getFrisPanel().setFrisView(friList);win.getFrisPanel().repaint();win.getContentPane().repaint();win.validate();好友状态改变线程类(Chang

42、eFriTypeListener)类,主要是将该边状态的好友重新显示在好友列表客户端,并对改变了的好友不断的刷新,这部分功能代码如下。LogUnLogModel cm=(LogUnLogModel)objin.readObject();ArrayList fpList=win.getFrisPanel().getFriPanList();for (FriendPanel friendPanel : fpList) if(friendPanel.getFriModel().getQqnum()=cm.getChangeQqnum() friendPanel.getFriModel().setLo

43、gtype(cm.getLogType(); friendPanel.getPicLab().setIcon(friendPanel.getImage();break;5.4 添加好友、删除好友、修改个人资料模块用户点击添加好友按钮,这时会弹出一个添加好友画面,用户把自己要添加的好友写入到文本框里,客户端将其封装,然后交给服务器,将好友添加到好友表里,同时刷新客户端界面,可以实现添加好友。删除好友,将删除的好友获取后,从好友表中删除,同时刷新界面即可。修改个人资料,是将自己的新昵称、新签名、新密码获取,然后在用户表中更新,同时刷新客户端界面,便可实现设置个人信息。添加好友的主要代码为:publ

44、ic void addFriend(int num1,int num2)String sql=insert into friends values(sq_fir.nextval, +num1+ , +num2+ ); dbutil.executeDML(sql); 删除好友的主要代码为:public void deleteFri(int num1,int num2)String sql=delete from friends where qqnum=+num1+and frinum=+num2;dbutil.executeDML(sql);修改个人资料的代码为:public void updateInf

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1