




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
咔嚓大学 本科生毕业论文本科生毕业论文 基于基于 javajava 的即时通讯系统的即时通讯系统 the instant messaging system of java 学生姓名增硁硁 所在专业电子信息工程 所在班级电子 2901 申请学位学士 指导教师罗锅锅 职称讲师 副指导教师职称 答辩时间2013 年 6 月 1 日 目 录 目目 录录 摘 要 .i abstract .ii 第 1 章绪论.1 1.1引言.1 1.2研究的目的和意义.1 1.3国内外发展状况.2 1.4相关技术介绍.2 1.4.1java 及其多线程特点.2 1.4.2java 与 internet .3 第 2 章系统需求分析.5 2.1系统可行性分析.5 2.2系统功能分析.5 2.3系统架构选择.5 2.4系统运行需求.6 第 3 章系统概要设计.7 3.1系统结构设计.7 3.2系统流程图.9 第 4 章系统详细设计.11 4.1系统通信实现原理.11 4.1.1客户端与服务器通信原理.11 4.1.2客户端和客户端之间的通信.12 4.2服务器端设计.12 4.2.1服务器的启动和初始化.13 4.2.2数据库连接.14 4.2.3消息处理器.15 4.3客户端设计.16 4.3.1用户注册.16 4.3.2用户登录.17 4.3.3一对一聊天和多对多聊天.20 4.3.4文件发送和接收.22 4.3.5好友的搜索和添加.25 4.4数据库设计.28 目 录 4.4.1oracle 的特点.28 4.4.2系统数据表设计.28 第 5 章总结.30 鸣 谢.31 参考文献.32 附 录.33 摘 要 i 摘 要 随着互联网的发展日益壮大,人与人之间的沟通更加紧密,方便和快捷。即时通讯系统作为一 种基于互联网,具有快速、实时、准确的交流工具,它提供文字消息的收发,语音和实时的视频交 流,数据的传输等多种强大的功能,使这其成为了在互联网上和他人联系的重要方式,可以加强信 息沟通,推动政府机构、大型事业单位信息化的建设,因此开发即时通讯系统具有重要的意义! 本系统是基于 java 平台的一个即时通讯系统。系统采用 c/s 架构,用 java 的 swing 搭建系统 界面,客户端与服务器的通信、客户端与客户端的通信分别是基于 tcp/ip 和 udp 两种通信协议。 系统采用多线程技术来提高界面响应速度和增强服务器处理多个客户请求的能力。数据库管理采用 oracle 和池化的连接技术,有效地维护连接数和利用计算机资源,使系统稳定地运行。本系统提 供一对一聊天,一对多聊天,用户注册和登录,好友的搜索和添加,文件传输等功能。 关键词:c/s;多线程;通信 abstract ii abstract with the development of the internet, the communications between people is becoming fast and convenient. instant communication system is based on the internet, which is a fast, instant and accurate communication tool. besides, the instant communication system has powerful functions like delivery- receiving text message, transmissions of videos and voices, and data transmission. it has been an important way to improve the connections between people and the transmission of information. it promotes the informatization construction of governments and institutions. therefore, to develop instant communication system is of great importance. the ics is based on the java platform. it uses the c/s architecture and the system interface constructed by swing of java. the communication between clients and servers and the communication between clients are based on communication protocol of tcp/ip and udp. multithreading technology is used to improve the response speed of interface and the servers ability to deal with several clients requests at the same time. the oracle and connection pool technology are applied in the management of database which can effectively preserve connections and use the computer resources so that the system can operate steadily. the ics provides one-to-one chatting and one-to-many chatting. it also satisfies the functions of user registration and login, quick friend discovery and file transmission. keywords: c/s; multi-thread;communication 咔嚓大学 2014 届本科生毕业论文 1 基于基于 javajava 的即时通讯系统的即时通讯系统 电子信息工程,200911611234,增硁硁 指导教师:罗锅锅 第 1 章 绪论 1.1引言 交流对于人类社会及其每个成员都至关重要,良好的沟通交流环境和条件,能推动社会和 经济更快地发展。随着社会的发展,互联网迅速普及,更加拉近了人们的距离,让人与人之间交流 更加频繁。即时通讯系统的出现,极大地丰富了人与人之间的交流方式,它不但提供简单的文字消 息收发,还提供实时语音和视频交流,让沟通方式不再单调。除此之外还提供文件和多媒体数据的 传输,方便了人们的工作也丰富了人们的生活。 本文接下来就介绍基于 java 的即时通讯系统的功能和实现。 1.2研究的目的和意义 计算机技术、网络技术高速发展的今天,即时通讯方式日益受到人们的青睐。即时通讯工具在 实现传输视频与音频信息,使协作成员可以远距离进行直观、真实的视音交流的同时,利用多媒体 的技术,它还可以帮助使用者对工作中各种信息进行处理。目前即时聊天系统种类众多,功能也较 为齐全。本课题现在所研究的即时通讯系统,其目标是定位于局域网,解决个人或单位的沟通及协 同的问题,提高工作效率。人们可以利用该通讯系统随时随地发送文字消息、进行多人群聊、消息 群发、传送文件等。系统包括客户端程序和服务器端程序,支持局域网和 internet。人们可以在 内部网覆盖的任何地点、任何时间进行即时交流,真正实现人与人协同工作。使您不必花费大量的 时间、金钱聚集到一个地方,通过网络,就能实现面对面的沟通,提高了效率。 即时通讯带给了更大的互动性,人们在交流彼此的看法、意见时,发现采用你来我往的方式达到 的效果最为明显。这就体现了互动性。通过使用及时通讯系统,大家不需要离开电脑,不需要借助 其它额外的工具,就可以在线实时地交流工作。即时通讯的最大特点是在网上进行信息的实时交 流。它的产生有着深刻的社会和技术的原因。大凡人们都有渴望社交、获得社会尊重、实现自 我的需求,这正是即时通讯软件风行的驱动力。而物质文明的日益发达所带来的副作用,又使 得人们习惯地与周围的人保持距离,以致人们更愿意对陌生人敞开心扉。与传统通讯方式相比, 即时通讯具备快捷、廉价、隐秘性高的特点,在网络中可以跨年龄、身份、行业、地域的限制, 咔嚓大学 2014 届本科生毕业论文 2 达到人与人、人与信息之间的零距离交流。从这点上讲,即时通讯的出现改变了人们的沟通方 式和交友文化,大大拓展了个人生活交流的空间。 1.3 国内外发展状况 即时通讯软件,几乎是每一个上网用户都必备的联络工具。即时通讯软件除了能够让您迅速地 在网上找到自己的朋友和工作伙伴,还可以实时交谈和传递信息,而且,现在不少即时通讯软件还 集成了文件共享、语音聊天、网络会议等功能。截止到目前,全球约有近 3 亿多人使用即时通讯软 件进行交流,正因为即时通讯软件拥有数以亿计的用户和迅速增长的市场,所以各个公司都盯上了 中国这个潜在的最大市场,一时间,即时通讯市场硝烟四起。除了腾讯 qq 和国外的几款著名即时 通讯软件纷纷推出新版本,网易也推出了一种新的即时通讯软件网易泡泡。朗玛公司也推出了 名为 uc 的通讯工具。 即时通讯软件最早发布于 1996 年 11 月 15 日,以色列特拉维文的 mirabilis ltd.发表了一个 题为e.t surf home:mirabilis ltd. provides new solutions for peer-to-peer internet communications的新闻稿,同时发布了他们新产品 icq(i seek you)的 beta 测试版。这天标志 着 internet 上的第一个成热的即时通讯系统(instant messagesystem)的诞生。即时通讯服务在 诞生之后的几年时间得到了迅猛发展,成为新增 internet 用户的 3 个主要应用之一(web,电子邮 件和即时通讯)。 在国内,1999 年 2 月,深圳腾讯公司正式发布 oicq99 beta build 0210,开通腾讯即时通讯 服务。2000 年 5 月,腾讯 qq 同时在线用户突破 10 万;2001 年 2 月 l0 日,腾讯 qq 同时在线用户 突破 100 万。2004 年 4 月份腾讯 qq 同时在线人数最高记录已经突破了 600 万大关,现在腾讯公司 正在把即时通讯系统往移动通讯方向扩展,如今已经将即时通讯与手机短信息(sms)成功结合起来。 即时通讯软件涉及和影响的领域已近越来越广,其竞争也越来越激烈。国内 qq 最大的敌手朗玛 uc 从 2001 年开始研发,2002 年的 12 月份 uc 正式发布,并且首创了很多技术:uc 是国内第一个做场 景聊天的;uc 是第一个把同学录和校友录结合的;第一个把即时通讯与休闲游戏相结合的;第一 个把发送动画与即时通讯相结合的。在一年的发展里,uc 一度达到峰值在线 30 万人,注册用户达 到 7000 万。 1.4相关技术介绍 1.4.1java 及其多线程特点 java 是一种简单、安全、容易适用、面向对象、可移置、高性能、多线程的语言。 1、 简单性 java 语言简单高校,基本 java 系统(编译器和解释器)所占空间不足 250kb 由于 java 最初是 为了对家用电器进行集成控制而设计的,因而具备简单命了的特征。 咔嚓大学 2014 届本科生毕业论文 3 2、面向对象 面向对象技术是现代工业的一次革新,提高了软件的模块化程度和重复适用率,缩短了软件开 发时间,减低了卡发成本。在 java 之前虽然已经有面向对象的程序设计语言问问世,但有些如 c+ 并不是完全的面向对象,而是面向过程和面向对象的混合体。java 则是完全面向对象的程序设计语 言。 3、安全性 java 是可以用在网路及分布环境下的网路程序设计语言。在网路环境下,语言的安全性变得更 为重要。java 提供了许多安全机制来保证其适用上的安全性。 4、平台独立 平台独立指程序不受操作平台的限制,可以应用在各种平台上。java 源程序经过编译后生成字 节码文件,而字节码与具体的计算机无关。只要计算机安装了能解释执行字节码的 java 虚拟机 jvm,就可以执行字节码文件,从而实现 java 的平台独立性。 5、多线程特点 java 具备内建的多线程功能,可以将一个程序的不同程序段设置为不同的线程,使各线程并发、 独立执行,提高系统的运行效率。 一般来说,当运行一个应用程序的时候,就启动了一个进程,当然有些会启动多个进程。启动 进程的时候,操作系统会为进程分配资源,其中最主要的资源是内存空间,因为程序是在内存中运 行的。在进程中,有些程序流程块是可以乱序执行的,并且这个代码块可以同时被多次执行。实际 上,这样的代码块就是线程体。线程是进程中乱序执行的代码流程。当多个线程同时运行的时候, 这样的执行模式成为并发执行。多线程的目的是为了最大限度的利用 cpu 资源。 所谓的“并发执行” 、 “同时”其实都不是真正意义上的“同时” 。众所周知,cpu 都有个时钟 频率,表示每秒中能执行 cpu 指令的次数。在每个时钟周期内,cpu 实际上只能去执行一条(也有 可能多条)指令。操作系统将进程线程进行管理,轮流(没有固定的顺序)分配每个进程很短的一 段是时间(不一定是均分) ,然后在每个线程内部,程序代码自己处理该进程内部线程的时间分配, 多个线程之间相互的切换去执行,这个切换时间也是非常短的。因此多任务、多进程、多线程都是 操作系统给人的一种宏观感受,从微观角度看,程序的运行是异步执行的。 用一句话做总结:虽然操作系统是多线程的,但 cpu 每一时刻只能做一件事。 1.4.2java 与 internet java 语言取得成功的领域之一就是在网络编程方面. 咔嚓大学 2014 届本科生毕业论文 4 java 语言是在网络环境下诞生的,所以 java 语言虽然不能说是对于网络编程的支持最好的 语言,但是必须说是一种对于网络编程提供良好支持的语言,使用 java 语言进行网络编程将是一 件比较轻松的工作。 tcp/ip(传输控制协议/网间协议)是 internet 的主要协议,定义了计算机和外设进行通信所使用的 规则(应用层,传输层,网络层,链路层).大多数基于 internet 的应用程序被看作 tcp/ip 协议的上一层. 如 : ftp, http, smtp, pop3, telnet, nntp 等。 ip 地址:tcp/ip 网络中的每台计算机都有唯一的地址-ip 地址。在 java 中,有一个用来存储 internet 地址的类叫 interaddress。 在 java 语言中,对于 tcp 方式的网络编程提供了良好的支持,在实际实现时,以 .socket 类代表客户端连接,以 .serversocket 类代表服务器端连接。在进行网络编程 时,底层网络通讯的细节已经实现了比较高的封装,所以在程序员实际编程时,只需要指定 ip 地 址和端口号码就可以建立连接了。正是由于这种高度的封装,一方面简化了 java 语言网络编程的 难度,另外也使得使用 java 语言进行网络编程时无法深入到网络的底层,所以使用 java 语言进行 网络底层系统编程很困难,具体点说,java 语言无法实现底层的网络嗅探以及获得 ip 包结构等信 息。但是由于 java 语言的网络编程比较简单,所以还是获得了广泛的使用。 在客户端网络编程中,首先需要建立连接,在 java api 中以 .socket 类的对象代表网 络连接,所以建立客户端网络连接,也就是创建 socket 类型的对象,该对象代表网络连接,连接 一旦建立,则完成了客户端编程的第一步,紧接着的步骤就是按照“请求-响应”模型进行网络数 据交换,在 java 语言中,数据传输功能由 java io 实现,也就是说只需要从连接中获得输入流和输 出流即可,然后将需要发送的数据写入连接对象的输出流中,在发送完成以后从输入流中读取数据 即可。 java 提供的网络功能有三大类: url, socket, datagram。 1、url 是三大功能中最高级的一种,通过 url java 程序可以直接送出或读入网络上的数据。 2、socket 是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道。 3、datagram 是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上。 咔嚓大学 2014 届本科生毕业论文 5 第 2 章 系统需求分析 2.1系统可行性分析 1、 经济可行性分析 本系统的设计和实现背景是学生毕业设计,不注重直接的经济效益和其后的发展方向,也不参 与任何商业性行为,只供少数人使用,所以安装一个免费版的 oracle 数据库和一台能运行 oracle 的机器即可,开发工具使用免费版的 eclipse,因此不存在经济可行性问题 2、 技术可行性分析 本系统是用 java 语言编写的,其界面设计运用了 java 的 swing 技术,由于涉及到网络通信, 所以开发者必须对 tcp/ip 和 udp 两种通信协议有一定了解,并且还要能够熟练运用 java 的 socket 网络编程和多线程技术。在数据库方面,本系统用到了 oracle 和数据库连接池技术,由于 本人平时习惯用 java 编程,对以上几种技术都能熟悉运用,所以技术上可行。 2.2系统功能分析 即时通讯系统,意在为用户提供了一个安全快捷的即时信息交流平台。由于本系统的设计是面 向校园用户的,为了让老师和学生之间、学生与学生之间、社团与社团之间更好地进行沟通和协作, 以提高其学习效率和,办事效率和活动组织效率,节省时间资源,本系统应该提供一下几个功能: 1、 用户注册,通过填写个人信息,注册本系统,让朋友,同学更容易去发现你,了解你, 找到你。 2、 为了让沟通变得更加简单、快捷、明了,系统支持即时文字消息的收发。 3、 建立群组讨论,让更多的人参与学习或其他重要事情的讨论对话中去,加强协作能力。 4、 添加和搜索好友 5、 文件实时传输 2.3系统架构选择 在应用开发领域中,目前系统平台的体系结构主要有两种,即 c/s(client/server)结构和 b/s(brower/server)结构。 咔嚓大学 2014 届本科生毕业论文 6 c/s 结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用 两端硬件环境的优势,将任务合理分配到 client 端和 server 端来实现,降低了系统的通讯开销。 本系统采用的是 c/s 结构,因为其具有以下优点 1、响应速度快 c/s 结构是客户端与数据库直接相连,没有中间环节,因此响应速度快。 2、软件设计个性化,可以满足用户个性化的需求 因为 c/s 结构有着自己的客户端,在客户端的设计上,可以根据客户的需求进行个性化的设 计,可以满足客户复杂的个性化需求。特别是在操作界面方面。 3、事务处理能力强大 c/s 结构充分利用客户端的硬件设施,将很多的数据处理工作在客户端完成,故数据处理能 力比较强大,对一些复杂的业务流程,也容易实现。 图 2-1 系统结构 2.4系统运行需求 1、运行环境:windows 9x、2000、xp、2003,linux 2、必要环境:jdk 1.5 以上 3、硬件环境:cpu 800mhz 以上,内存 256mb 以上 咔嚓大学 2014 届本科生毕业论文 7 第 3 章 系统概要设计 3.1系统结构设计 1、 系统总体结构设计如图 3-1 图 3-1 系统总体结构 2、 服务器功能结构 本系统服务器端的主要功能是负责处理客户连接,根据其的请求消息,做出相应的响应和返回 相关数据,具体有一下几个: 1.启动并监听用户请求 2.根据制订好的协议类型处理用户发来的消息 3.负责数据库的连接 4.输出服务器日志 其功能结构如图 3-2 咔嚓大学 2014 届本科生毕业论文 8 监听 请求appserver 服务器启动 动 数据库 消息处理器 服务器界面 输出日志 图 3-2 服务器功能结构 3、客户端功能结构 本系统客户端的功能主要包括一下几个: 1. 用户注册 2. 用户登录 3. 一对一聊天 4. 一对多聊天 5. 添加和搜索好友 6. 文件传输 7. 创建群组 其功能结构如图 3-3 咔嚓大学 2014 届本科生毕业论文 9 客户端启动 连接 服务 器 用户注册 用户登录 一对一聊天 一对多聊天 搜索添加好友 文件传输 创建群组 图 3-3 客户端功能结构 3.2系统流程图 系统流程图如图 3-4 服务器首先启动,等待客户机的连接,待服务器和客户端建立连接后,用户输入登录信息,验 证成功后进入系统主界面,便可以使用聊天,发送文件等一系列功能。登录失败,返回失败信息, 重新登录。 咔嚓大学 2014 届本科生毕业论文 10 启动服务器 开始 判断启动状 态 客户端启动 用户登录 判断登录信 息 主界面 退出 注册 否 是 否 是 图 3-4 系统流程图 咔嚓大学 2014 届本科生毕业论文 11 第 4 章 系统详细设计 4.1系统通信实现原理 4.1.1客户端与服务器通信原理 客户端与服务器的通信是基于 tcp/ip 协议的,tcp/ip 是一种面向连接的保证传输的协议,在 传输数据流前,双方会先建立一条虚拟的通信道。可以很少差错传输数据,其原理图如下: 图 4-1 客户端和服务器通信原理图 服务器启动时,创建一个 serversocket 并监听某一个端口,等待客户端的连接,当客户端的 连接到来时,服务器启动一个线程处理客户端和服务器的 socket 连接,再从 socket 里得到发送和 接收的数据流。多个客户端连接,则由多个线程处理,正是由于 java 多线程的特点,大大增强了 服务器并行处理能力。 建立通信之后,服务器和客户端之间的交互采取系统自订的一套消息协议,根据消息协议类型, 服务器做出不同的响应。协议主要有以下几种: 1、public static final int regist = 1; / 用户注册请求 2、public static final int login = 2; / 用户登录请求 咔嚓大学 2014 届本科生毕业论文 12 3、public static final int sms = 3; / 普通消息 4、public static final int getfriendlist = 4; /请求好友列表消息 5、public static final int search_user= 8; /搜索好友请求 6、public static final int updateuserinfo = 5; /更新用户信息请求 7、public static final int getconnectinfo = 6; /获得连接信息请求 8、public static final int updatefriendlist = 7; /更新好友列表请求 9、public static final int add_friend= 9; /添加好友请求 4.1.2 客户端和客户端之间的通信 客户端与客户端之间的连接是基于 udp 协议的,udp 是一个简单的面向数据报的运输层协议。 udp 不提供可靠性,它只是把应用程序传给 ip 层的数据报发送出去,但是并不能保证它们能到达 目的地。由于 udp 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机 制,故而传输速度很快。其原理图如下: datagramsocket 客户端 1 socket.close()socket.close() receive(package) 客户端 2 send(package) receive(package) send(package) 图 4-2 客户端之间的通信 4.2 服务器端设计 服务器主要的功能模块有一下几个: 1、 服务器的启动和初始化 咔嚓大学 2014 届本科生毕业论文 13 开始 服务器主界面 初始化数据库连接池 监听用户请求 触发按钮 启动 关闭 结束 2、 数据库连接 3、 消息处理器 4.2.1服务器的启动和初始化 1、界面设计 服务器启动界面设计如图 4-3: 图 4-3 服务器界面 2、 服务器启动流程图 其流程图如图 4-2: 咔嚓大学 2014 届本科生毕业论文 14 图 4-2 服务器启动流程 服务器启动时,先打开服务器主界面,servermain.java 负责其界面显示,当按下“启动”按钮, 启动服务器,appserver.java 负责服务器的初始化,调用其私有方法 initdbpool(),初始化数据库连 接池,创建 serversocket 监听用户请求,最后等待用户连接。 3、代码实现 服务器启动关键代码: 图 4-3 服务器启动关键代码 4.2.2数据库连接 1、数据库连接池原理设计 本系统在数据库连接方面,使用了数据库连接池,此方式能大大提高系统运行效率,充分利用 系统资源,其具体设计如下: 1)先创建一定数量的连接,放在一个数组列表里,形成连接“池” 2)当需要数据库连接时,从池里取出来,而不必每次都要耗时去建立连接,用完则重新放回池里 3)分别用最大连接数,最小连接数,可用连接数和在用连接数来维护连接池,保证其稳定性。 2、连接池实现流程图 流程图如图 4-4 public void initserver() initdbpool();/初始化数据库连接池 try serversocket = new serversocket(5000); (服务器启动,监听 5000 端口.); while (true) socket = serversocket.accept(); (客户已连接.); 咔嚓大学 2014 届本科生毕业论文 15 图 4-4 数据库连接池流程图 4.2.3消息处理器 1、消息处理器原理设计 消息处理器是服务器端的核心内容,它主要负责:从连接里获得客户端发来的消息包,对消息 包进行拆包处理,然后对消息包进行分析,根据消息的协议类型,处理相关的事件,待事件处理完 毕之后,打包反馈消息及相关的数据,通过连接发回给客户端。 2、消息处理流程图 其流程图如图 4-5 图 4-5 消息处理流程 咔嚓大学 2014 届本科生毕业论文 16 4.3 客户端设计 4.3.1用户注册 1、 用户注册界面 图 4-6 客户端注册界面 2、用户注册流程图 注册流程如图 4-7 咔嚓大学 2014 届本科生毕业论文 17 开始 填写注册信息 打包成消息包进行发送 注册成功 返回注册号码 结束 是 否 图 4-7 用户注册流程 首先从注册界面中收集用户信息,把注册信息打包成消息包,并设置消息类型为 1(即注册请 求) ,有客户端发送给服务器,服务器收到注册信息向数据库添加用户记录,成功则向客户端返回 注册号码,失败返回失败信息。 3、代码实现 咔嚓大学 2014 届本科生毕业论文 18 /=打包注册信息= protocolmsg send_msg = new protocolmsg(); send_msg.setmsgtpye(sysconstant.regist); map map = new hashmap(); send_msg.setmsgcontent(map); map.put(regist_info, user); protocolmsg get_msg = connectserver.regist(send_msg);/发送注册信息 /注册成功返回注册号 if (get_msg.getmsgcontent().get(regist_status).equals(success) int userid = (integer) get_msg.getmsgcontent().get(regist_info_userid); joptionpane.showmessagedialog(registview, 您注册的用户 id 是: + userid); connectserver.closesocket(); (关闭连接.); connectserver.closeconnection(); swingutilities.invokelater(closerunnable); else/注册失败返回错误信息 joptionpane.showmessagedialog(registview, 您注册的用户名已存在); connectserver.closesocket(); (关闭连接.); connectserver.closeconnection(); 图 4-8 用户注册关键代码 4.3.2用户登录 1、用户登录界面设计 登录界面 咔嚓大学 2014 届本科生毕业论文 19 图 4-9 用户登录界面 登录成功界面 图 4-10 用户登录成功界面 咔嚓大学 2014 届本科生毕业论文 20 登录失败界面 图 4-11 用户登录失败界面 2、用户登录流程 登录流程图如图 4-12 开始 填写登录信息 打包成消息包进行发送 登录成功 进入主界面 结束 是 否 图 4-12 登录流程 首先由登录界面收集用户名和密码,打包成消息包发送到服务器,由服务器验证信息是否和数 据库注册的信息一致,则为登录成功并返回用户信息、好友列表和群组信息,显示主界面,反则登 录失败则返回失败信息 咔嚓大学 2014 届本科生毕业论文 21 3、 代码实现 /发送登录信息 protocolmsg get_msg = connectserver.login(send_msg); if (get_msg.getmsgcontent().get(login_status).equals(success) swingutilities.invokelater(closerunnable); /=获取好友列表= hashmapfriendlist=(hashmap) get_msg.getmsgcontent().get(success_info); friendsinfomanager.setfriendlist(friendlist); /登录的用户信息 clientglobalvar.user=(user) get_msg.getmsgcontent().get(login_user); /群组信息 arraylistchatgrouplist=(arraylist) get_msg.getmsgcontent().get(user_groups); for (int i = 0; i 0) passedlen += filepacket.getlength(); system.out.println(yijieshou+passedlen); else swingutilities.invokelater(donerunnable); break; outputstream.write(filepacket.getdata(); swingutilities.invokelater(updaterunnable); int percent = (int) (passedlen * 100 / len); system.out.println(文件接收了 + (passedlen * 100 / len) + %); 图 4-20 文件接收关键代码 4.3.5好友的搜索和添加 1、界面设计如图 4-21 咔嚓大学 2014 届本科生毕业论文 27 图 4-21 好友搜索界面 2、搜索和添加好友流程图 如图 4-22 图 4-22 好友搜索和添加流程 用户在搜索好友时,先选择一种搜索方式,如果选择精确搜索方式,则输入要搜索的号码,如 果选择是模糊搜索,则只需输入关键字,然后向服务器发送搜索信息,服务器根据搜索信息和类型 咔嚓大学 2014 届本科生毕业论文 28 去匹配数据库并向客户端返回搜索结果,显示在界面上,如果用户双击要添加好友,便会得到好友 信息,并向服务器发送好友添加的请求,服务器根据请求向用户的好友列表中添加记录,添加好友 成功,更新客户端主界面的还有列表信息。 3、代码实现 /发送添加好友请求 try (正在发送添加好友信息.); objectoutputstream outputstream = new objectoutputstream(new bufferedoutputstream(connectserverthread.getconconnectserverthread().getsocket().getoutputstream(); protocolmsg send_msg = new protocolmsg(); send_msg.setmsgtpye(sysconstant.add_friend); map map = new hashmap(); send_msg.setmsgcontent(map); map.put(add_userid, userid); map.put(add_friendid, friendid); outputstre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校维修施工合同范本
- 灯具买卖全款合同范本
- 卫生护理合同范本
- 矿山监控施工合同范本
- 餐厅店面股份合同范本
- 公积金组合贷款合同范本
- 锅炉采购简易合同范本
- 建筑木工材料合同范本
- 委托劳务公司合同范本
- 包车合同范本
- 人教版小学五年级数学下册《第五单元 图形的运动(三)》大单元整体教学设计2022课标
- 全国中学教师《初中数学》说课教学比赛-主题:《等腰三角形的性质》说课-一等奖课件
- 2024年工会财务知识竞赛试题及答案
- 26个英语字母描红练习(素材)-小学英语
- DL∕T 686-2018 电力网电能损耗计算导则
- 2023年河南省中考数学试卷及答案
- 中外民歌欣赏(高中音乐课件)
- Revit-基础教程课件
- 大学美育(第二版) 课件 第五单元:书法艺术
- 消防工程技术咨询合同
- 从《史记》看司马迁的命运观
评论
0/150
提交评论