基于Android的网络聊天软件的设计与实现.doc

上传人:可**** 文档编号:91255652 上传时间:2023-05-24 格式:DOC 页数:39 大小:819.50KB
返回 下载 相关 举报
基于Android的网络聊天软件的设计与实现.doc_第1页
第1页 / 共39页
基于Android的网络聊天软件的设计与实现.doc_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《基于Android的网络聊天软件的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于Android的网络聊天软件的设计与实现.doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、XXXX本科生毕业设计(论文)学院(系): XX 专 业: XX 学 生: XX 指导教师: XX 完成日期 年 月XXX本科生毕业设计(论文)基于Android的网络聊天软件的设计与实现Design and Implementation of the Network Chatting Softwarebased on the Android总 计:毕业设计(论文) 30页表 格: 4个图 片: 28个基于Android的网络聊天软件的设计与实现XXX 业 设 计(论文)基于Android的网络聊天软件的设计与实现Design and Implementation of the Network

2、 Chatting Softwarebased on the Android学 院(系): XX 专 业: XX 学 生 姓 名: XX 学 号: XX 指导教师(职称): XX 评 阅 教 师: XX 完 成 日 期: 南阳理工学院Nanyang Institute of Technology基于Android的聊天网络软件的设计与实现软件工程 XX摘 要 即时通信(Instant Messaging,IM)软件产生以来,这种通过网络与其它在线用户进行交流的方式,受到了个人公司以及行业的青睐。本文采用软件工程的管理和设计方法,对项目的需求进行了分析,完成了功能用例建模,使用Socket通信技

3、术结合TCP/IP协议原理实现了基于Android操作系统的聊天软件各个模块的分析设计,提出了系统的体系结构和整体架构设计方案,并予以实现,取得了较好的使用价值。关键词 Android;即时聊天;客户端/服务器模型;套接;Design and Implementation of the Network Chatting Softwarebased on the AndroidSoftware Engineering MajorXXAbstract: Since the invention of instant messaging (IM), such style which online us

4、ers communicate with others on the net, has become more and more welcomed by individual, company and software industry. This paper using the software engineering management and design methods to analyze the requirement of project, and implement the construction of function model. With the socket com

5、munication technology combined with the TCP/IP protocol finished all of the modules in chat software which runs in Android Operation. Propose and carry out the system architecture and overall architecture design, get a good value in use.Key words: Android; Instant Messaging; IM; C/S; Socket;目 录1 绪论1

6、1.1 项目背景11.2 研究的目的和意义11.3 国内外研究的现状11.4 论文的主要内容和组织结构21.5 本章小结22 关键技术介绍22.1 Android平台22.1.1 Android特征22.1.2 Android体系结构32.2 TCP/IP协议42.2.1 C/S模型42.2.2 TCP协议42.2.3 Android的MVC架构52.3 多线程技术62.4 运行环境62.5 本章小结73 需求分析73.1 系统的整体分析73.1.1 服务器端83.1.2 客户端83.2 可行性分析93.3 本章小结94 Android聊天软件系统设计94.1 系统实现原理104.2 服务器端

7、114.2.1 用户登录验证模块114.2.2 信息的转发模块114.2.3 刷新好友列表模块124.3 客户端124.3.1 用户登录模块124.3.2 用户交互模块124.3.3 用户注册模块134.3.4 用户设置模块134.3.5 用户注销模块144.4 Android聊天软件用户存储数据库的设计144.4.1 SQLite 简介144.4.2 数据库设计144.5 本章小结145 Android聊天软件的实现145.1 数据传输的实现145.2 服务器端的实现145.2.1 用户登录的实现145.2.2 用户退出145.2.3 更新好友列表145.3 客户端代码的实现145.4 客户

8、端UI实现145.4.1 半透明悬浮窗口的实现145.4.2 主界面左右滑动切换的实现145.5 本章小结146 系统演示与运行146.1 用户登录演示146.2 用户注册演示146.3 主界面演示146.4 聊天界面的演示146.5 本章小结14结束语14参考文献14致谢141 绪论1.1 项目背景即时通信(Instant Messaging, IM)是随着互联网的出现而新型通信手段,根据通讯软件的发展与分析,作为即时通信工具中最具有增长潜力之一的聊天软件,它为满足人们的需要,将其功能不断的完善,不但可以文字聊天和文件传输,还可以通过语音,视频来聊天,所以其发展十分迅速。而随着3G时代的来临

9、,其与移动客户终端的结合更受到了广泛的关注。本项目来自以下当前受到关注的启发。(1) 开放性移动设备Android平台目前受到了很多人的喜爱,并且在短短几年取代了诺基亚成为全球最热销的手机。(2) 随着手机成为人们日常生活的必需品,通过PC端进行即时聊天已经不能满足人们的需求,人们需求多终端的聊天即手机和PC的互通。本系统通过Socket通信实现Android手机间互通,Android手机和PC端的互通。1.2 研究的目的和意义即时通信软件作为一种便捷的网络通信技术已经越来越深入人心,应用范围从单纯的网络聊天工具变成工作生活所不可缺的信息交流平台。在互联网日益普及的今天,即时通信的用户规模也呈

10、现出快速增长的态势。现阶段,通过手持设备终端和即时通信软件挂钩,把以往的只能应用在PC机上的即时通信软件移植到移动设备中,让用户能够更方便地应用即时通信产品,是即时通信的发展趋势,也是IM系统软件市场发展的一个重要方向。1.3 国内外研究的现状1996年11月ICQ在全球发布,拉开了IM(Instant Messaging,即时通信)应用的序幕。就是这样一款小软件在短短数年时间里发展出了一个巨大的IM产业。时至今日,即时通信工具早已成为最热门的网络应用之一。国外除了ICQ外还有雅虎的雅虎通、微软的MSN、被eBay收购的Skype和Google的Gtalk都在国际上占有不小比重。相较于国内,腾

11、讯QQ无疑是国内即时通信市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使面对微软MSN的强大攻势,腾讯QQ的市场占有率依然稳步增长,到现在占据市场70%以上份额。除了腾讯以外,国内的IM还有Lava,UC等软件。1.4 论文的主要内容和组织结构本文的研究工作是设计和实现一个Android平台的即时通信系统,实现移动设备与PC终端的互通。采用TCP/IP 协议,在Google推出的Android平台下进行研究工作。本文的研究内容主要有下面几方面:1.Android平台1上即时通信系统的架构:提出整个系统的合理架构以实现整个系统。2.TCP/IP协议:介绍

12、TCP/IP协议的内容并对协议进行解析;3.移动即时通信系统的实现:根据提出的系统架构,并阐述本移动即时通信系统的设计和具体实现,最终对系统进行演示和运行。本文在第二章介绍项目所用到的基本知识,对Android平台、TCP/IP协议以及MVC架构进行介绍,讨论在Android平台下程序的开发以及开发所需的环境。然后在第三章根据项目具体要求得出需求分析,依照画出的用例模型将系统分为客户端和服务器端。在第四章中详细的阐述的具体的功能的流程和系统实现的原理。第五章介绍了一些重要功能实现的代码及解释。第六章为程序的演示和运行。1.5 本章小结本章主要介绍了项目的背景、研究的目的和意义以及国内外实时聊天

13、系统的研究和应用现状,同时列出来整篇文章的主要章节结构,为后续的部分介绍做出了提纲。2 关键技术介绍毕业设计是对四年学习内容的一个综合考验,因此将会涉及到多门课程的知识。结合本课题的研究内容,本章将会把毕业设计过程中所遇到的关键技术进行一个全方位的阐述。2.1 Android平台Android操作系统是由谷歌Google和开放手机联盟共同开发发展的移动设备操作系统,其最早的一个发布版本开始于2007年11月的Android 1.0 beta,并且已经发布了多个更新版本的Android操作系统。到2010年末数据显示,仅正式推出两年多操作系统的Android在市场占有率上已经超越称霸十年的诺基亚

14、Symbian系统。2012年2月,Android操作系统在全球智能手机操作系统的市场份额已达52.5%,成为全球第一大智能手机操作系统2。2.1.1 Android特征1.提供访问硬件的API函数,简化像摄像头、GPS等硬件的访问过程。2.具有自己的运行时和虚拟机。3.提供丰富的界面控件供使用者之间调用,加快用户界面的开发速度,保证Android平台上程序界面的一致性。4.提供轻量级的进程间通讯机制Intent,使跨进程组件通信和发送系统级广播成为可能。5.提供了Service作为无用户界面,长时间后台运行的组件。6.支持高效、快速的数据存储方式 。 2.1.2 Android体系结构 采用

15、软件堆层的架构,共分为四层如下图2-13:Linux 内核 1.硬件和其他软件堆层之间的一个抽象隔离层。2.提供安全机制、内存管理、进程管理、网络协议堆栈、和驱动程序等。中间件层1.由函数库和Android运行时构成。应用程序框架1.Activity Manager,管理应用程序的生命周期。2.Windows Manager,启动应用程序的窗体。3.Content Provider,共享私有数据,实现跨进程的数据访问。4.Package Manager,管理安装在Android系统内的应用程序。图2-1 Android的体系结构图5.Teleghony Manager,管理与拨打和接听电话的相

16、关功能。6.Resource Manager,允许应用程序使用非代码资源。7.Location Manager,管理与地图相关的服务功能。8.Notification Manager,允许应用程序在状态栏中显示提示信息。应用程序1.提供一系列的核心应用程序。2.包括电子邮件客户端、浏览器、通讯录和日历等。 2.2 TCP/IP协议TCP协议是网络通信的基础核心协议,在Java中也专门提供了Socket的类库,抽象出了基于TCP协议通信的常用方法:TCP协议与三次握手。本节在讲述TCP协议流程前,先来要对一些概念进行说明。2.2.1 C/S模型在网络连接模式中,除了等网外,还有一种形式的网络,即

17、客户机/服务器网络。在该模型中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需的网络资源,而服务器为客户机提供网络必须的资源。通过C/S模型可以从分利用两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,所以C/S模式具有以下几个优点:(1)因为在客户端上有一套完整的系统软件,具有很强的交互性,系统工作人员在运用系统时可以获得出错提示、在线帮助等较强功能;(2)由于C/S模式是配对的点对点的结构模式,因此多采用局域网的协议,并且通常是学校内部固定的从事学生学籍管理工作的用户群,所以安全性较高;(3)因为C/S模式只有两层逻辑结构,因此网络通讯量低,传输速度快,占用网

18、络资源少。随着Android手机性能的不断提升,使用C/S架构将一些需要较长时间处理的功能放置到客户端。使用户得到更好的网络传输,提升用户体验。2.2.2 TCP协议为了实现客户端同服务器端的通信,客户端首先发送一个“SYN”数据包。如果服务器收到SYN标记,它将发回一个“SYN+ACK”数据包。接着,客户端为了表示收到了这个SYN+ACK信息,会向服务器发送一个最终确认信息(ACK包)。这种SYN,SYN+ACK,ACK的步骤被称为TCP连接建立时的“三次握手”,在这之后,连接就建立起来了,这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号。这种通信模式也叫客户端/服

19、务器(C/S)模式 如下图2-2 TCP的三次握手。由此可见,通过客户端和服务器的“三次握手”,双方可以建立畅通的通信信道,在此信道上双方互相传输数据。图2-2 TCP的三次握手由于TCP/IP协议能够保证数据的安全传输和正确到达目标主机,本文所涉及到聊天系统采用TCP/IP协议,从而能够实现更加精确即时的消息发送和接受。2.2.3 Android的MVC架构在系统客户端中,采用MVC模式的设计思想,提高了程序的模块化程度。在本系统客户端中,结构图如下:图2-3Android MVC架构视图层(View)视图提供界面功能显示的机制,主要是用户数据的输入界面和对模型数据的显示功能,同时也包括信息

20、的提示功能。这方面主要是引入了Xml配置文件其中包括样式布局文件(Style)、动画效果布局文件(anim文件夹下)、图片布局文件(drawable文件夹下)。控制层(Control)主要负责对整个系统的流程进行调度,管理用户界面的逻辑流程,以及用户交互如何影响数据模型和数据模型如何影响用户交互过程这些东西都是有Android中的Activity完成的,在Android开发中,其配置文件AndroidManifest.xml扮演控制器的角色,文件中对各种组件视图进行相应的配置,以供模型在改变时对视图的调用。模型层(Model)主要对数据库的增、删、改、查等操作。同时包含了信息的接受,发送,请求

21、的提交。具体到在程序中是通过Service实现数据的发送,接受。当一个Activity启动后动态的调用bindService函数将其与Service绑定,关于这一块后面会详细解释。2.3 多线程技术多线程在构建大型系统的时候是需要重点关注的一个重要方面,特别是在效率和性能之间做一个权衡的时候。恰当的使用多线程可以极大的提高系统性能。使用多线程的好处有以下几点:(1)使用线程可以把占据长时间的程序中的任务放到后台去处理;(2)用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度;(3)程序的运行速度可能加快;(4)在一些等待的任务实现上如用户

22、输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。而Java是一种多线程的语言,它可以同时运行多个线程处理多个任务。同时Java内置多线程控制,这样可大大简化多线程应用程序的开发。提供了一个Thread类,它封装了所有有关线程的控制,负责线程的启动、运行、休眠、挂起、恢复、退出和终止等一系列逻辑控制操作,并可检查线程的状态。此外Thread类还实现了对线程行为的优先级的控制。2.4 运行环境(1)操作系统:Windows XP 或者 Windows 7(2)数据库:SQLite(Android提供的一个标准的数据库,支持SQL语句),MyS

23、QL 5.0。(3)Android 版本:Android 2.2(4)开发工具:eclipse+android SDK+MySQL5.02.5 本章小结本章主要介绍了Android聊天软件在开发过程中用到的关键技术,包括Android系统的体系结构、C/S模型、TCP协议以及多线程技术。同时介绍了软件开发的硬件和软件环境。3 需求分析上章介绍了本系统所需要的软硬件配置以及关键技术。本章将开始着重分析系统的需求,从系统功能和可行性分析两个方面明确系统所要实现的目标,为系统的开发做好铺垫。3.1 系统的整体分析本项目根据用户的需求,对即时通信的常用功能进行实现,系统的功能用例图如下3-1系统用例图

24、图3-1系统用例图通过用例图可以知道,系统的主要实现功能大体上可以分成:1用户注册:用户如果没有可用的ID,可填写相关的个人信息(要注册的ID、密码等)进行注册,向服务器提交后服务器返回相应的信息。2用户登录:用户名和密码进行登录即时通信系统。3用户设置:可对用户的基本信息和一些系统选项进行设置。4查看好友信息:登录成功后,可以按照分组查看所有的好友概要信息(用户名、用户ID),并可以查看某个好友的详细信息。5用户添加、删除好友:根据其它用户的ID添加进自己的好友至好友列表。6用户向好友发送信息:用户登录成功后可给某位好友发送信息,如果好友不在系统将提示该好友不在。7用户接收好友的信息:用户登

25、录成功后会监听好友发送过来的信息,并显示在相应的界面上。8用户注销:用户注销,退出本系统。系统采用C/S架构模式,所以在进一步细化过程中将系统分为服务器端和客户端两部分。3.1.1 服务器端在C/S架构中,服务器端起到了连接客户端并且处理客户端请求的作用。服务器的功能模块图如下图 3-2,该部分的功能需求主要实现功能有:(1)用户登录验证:将用户提交的账号和密码在服务器端验证。(2)信息的转发:通过服务器将用户的信息转发给其他用户。(3)刷新在线好友:接到用户的信息后返回该用户的在线好友信息。图3-2服务器功能模块图3.1.2 客户端在C/S架构中客户端是核心部分,是该网络基本通信模型。客户端

26、通过服务器获得所需的信息,所以客户端的功能模块图如下图3-3所示。其相应的功能解释已经在上面的系统用例图中解释过,这里不再累述。图3-3客户端功能模块图3.2 可行性分析从技术方面将本系统的开发利用MySQL5.0作为本系统的数据库,它是一个支持多用户的新型数据库,适用于中小规模的数据量需求。使用Java作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。从运行方面将本系统为一个小型的聊天系统,所耗费的资源非常的小,现在一般的Andr

27、oid手机无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。经过了对Android平台聊天客户端的详细分析可以确定在Android平台上对基于TCP/IP协议的客户端开发从技术上和运行方面来说是可以实现的。3.3 本章小结本章主要明确了需求分析,根据C/S模型将系统分为服务器端和客户端。再通过对系统的进一步分析后,得到了服务器端和客户端的功能模块图。同时从技术和运行两方面论述了Android聊天软件的可行性分析。4 Android聊天软件系统设计通过上一章需求分析得到(系统的运行如图4-1所示)系统的需求分析以及大致的设计方向,本章将会从系统实现原理、服务器端、客户端与数据库设计

28、的几个方面深层次的介绍系统所涉及的关键技术,通过这些技术的实现,系统的设计阶段将会告一段落。图4-1系统运行图4.1 系统实现原理聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。如图

29、4-2所示:服务器端启动后先要调用Serversocket()函数建立一个流式套接字,并返回引用新套接字的描述符。然后将此套接字描述符与本机的一个端口建立关联,这由ServerSocket()函数来完成。服务器只有在调用了accept()函数进入等待状态之后才可以接受来自客户端的请求。一旦接收到客户端通过connect()发出的连接请求,accept()将返回一个新的套接字描述符,通过套接字描述符调用相应的流的read()或write()函数即可与客户端进行数据收发。待数据传送完成,服务器和客户端调用closes()关闭套接字。需要说明的是服务器此时关闭的是此前由accept()所返回的新套接

30、字,而不是先前开始创建的套接字。在此套接字被关闭后,服务器将再次处于阻塞状态,以等待下一个客户端的连接请求并重复上述过程。图4-2系统实现原理4.2 服务器端服务器的流程图如下4-3所示:图4-3服务器流程图服务器接收到客户的信息,进行相应的判定,将信息交给相应的功能模块进行处理。根据功能需要我将判定分为以下几类如表4-1所示:表4-1 自定义数值名称发送值备注CHAT1聊天REFRESH2更新好友REGISTER3注册LOGIN4登录ADD5添加好友DELETE6删除好友NOHAVE7该用户不存在和不在线AGREE8同意添加好友REFUSE9拒绝添加好友4.2.1 用户登录验证模块为了保证用

31、户信息的安全,将用户是否合法的判定放在服务器端,通过查询数据库得出判定结果,返回给客户端。4.2.2 信息的转发模块采用服务器转发的方式,实现外网聊天的功能。服务器将接收到的信息转发给其他用户。其中信息类型包括CHAT、ADD、AGREE、REFUSE这四种类型。(1)CHAT 服务器判定为CHAT,则转发给与之通信的用户。(2)ADD、AGREE、REFUSE三者均为同一功能添加好友。当用户点击添加好友时,服务器接收到类型为ADD的消息,并将他转发给要添加的好友。好有用户可以选择同意添加好友和拒绝添加好友,分别向服务器发送一个类型为AGREE和REFUSE的信息。服务器则根据类型不同完成数据

32、库的添加。4.2.3 刷新好友列表模块用户点击刷新列表后,向服务器发送REFRESH类型的消息,服务器将查询数据库将该用的好友列表封装,发送给该用户。4.3 客户端4.3.1 用户登录模块当用户登录时,客户端由LoginActivity.java界面收集并验证用户登录信息后,封装成User对象类然后通过建立在Socket的连接之上的对象输出流将用户登录信息发送给服务器,服务器端将请求转发给UserDaoImpl处理,UserDaoImpl在收到信息后将验证数据的完整性并在对象型数据库中查找该用户名是否已经注册,然后将注册用户的信息与登录请求信息进行密码验证,在登录成功后将该用户添加到在线用户列

33、表,最后将登录结果返回给客户端。如果登录成功,客户端将继续启动聊天主界面。具体流程如下图4-4所示:图4-4 用户登录流程图4.3.2 用户交互模块用户交互模块的功能示意图如图4-5:当用户登录成功后,客户端有MainActivity.java和ChatWindowsActivity.java界面收集用户要交互的信息后,封装成Messageinfo对象类然后通过建立在Socket的连接之上的对象输出流将用户交互信息发送给服务器,服务器端将请求类型分类转发给不同的方法处理。 图4-5用户交互图4.3.3 用户注册模块当用户注册时,客户端由RegisterActivity.java 界面收集用户注

34、册信息后,封装成User对象类然后通过建立在Socket的连接之上的对象输出流将用户注册信息发送给服务器,服务器端将请求转发给UserDaoImpl处理,UserDaoImpl在收到信息后将数据完整保存在对象型数据库中,如果注册成功,客户端可以返回到LoginActivity.java界面登录。流程如下图4-6所示:图4-6用户注册流程图4.3.4 用户设置模块当用户登录成功后,客户端有MainActivity.java界面收集用户要交互的信息后,封装成Messageinfo对象类然后通过建立在Socket的连接之上的对象输出流将信息发送给服务器,服务器端将请求类型分类转发给不同的方法处理。用

35、户设置的功能模块图如下图4-7所示:图4-7用户设置模块功能示意图4.3.5 用户注销模块当用户点击退出按钮,客户端有MainActivity.java界面收集用户要交互的信息后,封装成Messageinfo对象类然后通过建立在Socket的连接之上的对象输出流将用户退出信息发送给服务器,服务器端将请求类型分类转发给不同的方法处理。用户注销的流程图如下图4-8所示:图4-8用户退出流程4.4 Android聊天软件用户存储数据库的设计4.4.1 SQLite 简介SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它

36、,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,同时它还支持事务处理功能等等。SQLite 支持跨平台,操作简单,能够

37、使用很多语言直接创建数据库。4.4.2 数据库设计数据库分为客户端数据库(SQLite)和服务器端数据库(Mysql),下面将通过系统各个实体的E-R图予以详细说明。客户端数据库:为了实现用户的快速登录,记住用户的个性化选择即当用户选中下拉列表中的账号恢复该账号用户设置的选项。建立用户表将用户的User_ID,Password,HeadImage等属性存入SQLite中,设计如下图4-9所示的数据项和数据结构。图4-9 客户端用户表E-R图服务器端的数据库服务器端主要记录注册用户的个人信息,在线情况和好友,如图4-10所示:图4-10 服务器端用户表E-R图好友关系表,如图4-11所示:图4-

38、9 好友关系表E-R图三个相应的表结构如下表4-2、4-3、4-4所示:表4-2客户端用户表字段名字段类型字段说明备注UserNameVarchar(10)用户名主键PasswordVarchar(10)用户密码不能为空MoodVarchar(50)心情或个性签名可以为空Box_rembInteger是否记住用户密码默认为0Box_open Integer用户是否接受添加好友默认为0Self_ImageBlob用户头像默认为自带头像表4-3服务器端用户表字段名字段类型字段说明备注UserNameVarchar(10)用户名主键PasswordVarchar(10)用户密码不能为空MoodVar

39、char(50)心情或个性签名可以为空state Integer 用在线状态默认为0Self_ImageBlob用户头像null表4-4好友关系表字段名字段类型字段说明备注UserNameVarchar(10)用户名主键,外键FriendNameVarchar(10)好友名主键,外键4.5 本章小结本章通过对系统实现原理、客户端和服务器端以及数据库的设计,基本完成了程序的整体架构,为编码和实现铺平了道路。5 Android聊天软件的实现 基于Android的即时通信软件是为给Android手机用户提供随时随地与好友交流的平台,主要针对Android手机用户。根据需求分析、系统概要设计以及更好地

40、用户体验编码与实现分为数据传输的实现、客户端业务逻辑实现、服务器业务逻辑实现和界面UI实现四个部分。5.1 数据传输的实现本程序采用C/S模式架构,客户端与服务器端使用socket套接字实现连接,通过多线程技术完成相互通信。Socket传输模块的实现Android集成了Java的运行环境所以对Java有很好的支持,本系统就使用.Socket包。在服务器和客户端定义相同的Bean结构,通过序列化将对象转换成二进制流传送到服务器端,使用在服务器端定义的Bean进行反序列化,将二进制流恢复为对象代码如下:public boolean connect(User user) boolean isok =

41、 false;try s = new Socket(10.0.2.2, 9999);s.getOutputStream();oos = new ObjectOutputStream(s.getOutputStream();oos.writeObject(user);ois = new ObjectInputStream(s.getInputStream();type=(MessageType) ois.readObject();gf=(Group_Friend) ois.readObject();myapp.setChilds(gf.getFriends();myapp.setGroups(g

42、f.getGroups();isok=type.isOk();if(isok)Client_To_ServerThread ccst=new Client_To_ServerThread(s);/启动该通讯线程new Thread(ccst).start();SaveClientSocket.add(user.getUsername(), ccst); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (Exception e) / TODO Auto-gener

43、ated catch blocke.printStackTrace();return isok;5.2 服务器端的实现5.2.1 用户登录的实现查询数据库判定用户是否存在,如果存在则创建一个新的进程,并将这个进程添加到进程管理类中(SaveClientThread)。相关代码如下:if(sql.checkUser(user)!=null)if(sql.checkUser(user).getPassword().equals(password)/查找数据库成功后try Group_Friend gf=new Group_Friend();UserDaoImpl udi=new UserDaoImpl();MessageType type = new MessageType();type.setConnect(true);type.setExist(false);type.setOk(true);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁