基于Android的网络聊天软件的设计与实现.docx
- 文档编号:23200618
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:41
- 大小:639.96KB
基于Android的网络聊天软件的设计与实现.docx
《基于Android的网络聊天软件的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Android的网络聊天软件的设计与实现.docx(41页珍藏版)》请在冰豆网上搜索。
基于Android的网络聊天软件的设计与实现
XXXX
本科生毕业设计(论文)
学院(系):
XX
专业:
XX
学生:
XX
指导教师:
XX
完成日期年月
XXX本科生毕业设计(论文)
基于Android的网络聊天软件的设计与实现
DesignandImplementationoftheNetworkChattingSoftware
basedontheAndroid
总计:
毕业设计(论文)30页
表格:
4个
图片:
28个
XXX业设计(论文)
基于Android的网络聊天软件的设计与实现
DesignandImplementationoftheNetworkChattingSoftware
basedontheAndroid
学院(系):
XX
专业:
XX
学生姓名:
XX
学号:
XX
指导教师(职称):
XX
评阅教师:
XX
完成日期:
南阳理工学院
NanyangInstituteofTechnology
基于Android的聊天网络软件的设计与实现
软件工程XX
1[摘要]即时通信(InstantMessaging,IM)软件产生以来,这种通过网络与其它在线用户进行交流的方式,受到了个人公司以及行业的青睐。
本文采用软件工程的管理和设计方法,对项目的需求进行了分析,完成了功能用例建模,使用Socket通信技术结合TCP/IP协议原理实现了基于Android操作系统的聊天软件各个模块的分析设计,提出了系统的体系结构和整体架构设计方案,并予以实现,取得了较好的使用价值。
[关键词]Android;即时聊天;客户端/服务器模型;套接;
DesignandImplementationoftheNetworkChattingSoftware
basedontheAndroid
SoftwareEngineeringMajorXX
1Abstract:
Sincetheinventionofinstantmessaging(IM),suchstylewhichonlineuserscommunicatewithothersonthenet,hasbecomemoreandmorewelcomedbyindividual,companyandsoftwareindustry.Thispaperusingthesoftwareengineeringmanagementanddesignmethodstoanalyzetherequirementofproject,andimplementtheconstructionoffunctionmodel.WiththesocketcommunicationtechnologycombinedwiththeTCP/IPprotocolfinishedallofthemodulesinchatsoftwarewhichrunsinAndroidOperation.Proposeandcarryoutthesystemarchitectureandoverallarchitecturedesign,getagoodvalueinuse.
1Keywords:
Android;InstantMessaging;IM;C/S;Socket;
1绪论
1.1项目背景
即时通信(InstantMessaging,IM)是随着互联网的出现而新型通信手段,根据通讯软件的发展与分析,作为即时通信工具中最具有增长潜力之一的聊天软件,它为满足人们的需要,将其功能不断的完善,不但可以文字聊天和文件传输,还可以通过语音,视频来聊天,所以其发展十分迅速。
而随着3G时代的来临,其与移动客户终端的结合更受到了广泛的关注。
本项目来自以下当前受到关注的启发。
(1)开放性移动设备Android平台目前受到了很多人的喜爱,并且在短短几年取代了诺基亚成为全球最热销的手机。
(2)随着手机成为人们日常生活的必需品,通过PC端进行即时聊天已经不能满足人们的需求,人们需求多终端的聊天即手机和PC的互通。
本系统通过Socket通信实现Android手机间互通,Android手机和PC端的互通。
1.2研究的目的和意义
即时通信软件作为一种便捷的网络通信技术已经越来越深入人心,应用范围从单纯的网络聊天工具变成工作生活所不可缺的信息交流平台。
在互联网日益普及的今天,即时通信的用户规模也呈现出快速增长的态势。
现阶段,通过手持设备终端和即时通信软件挂钩,把以往的只能应用在PC机上的即时通信软件移植到移动设备中,让用户能够更方便地应用即时通信产品,是即时通信的发展趋势,也是IM系统软件市场发展的一个重要方向。
1.3国内外研究的现状
1996年11月ICQ在全球发布,拉开了IM(InstantMessaging,即时通信)应用的序幕。
就是这样一款小软件在短短数年时间里发展出了一个巨大的IM产业。
时至今日,即时通信工具早已成为最热门的网络应用之一。
国外除了ICQ外还有雅虎的雅虎通、微软的MSN、被eBay收购的Skype和Google的Gtalk都在国际上占有不小比重。
相较于国内,腾讯QQ无疑是国内即时通信市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使面对微软MSN的强大攻势,腾讯QQ的市场占有率依然稳步增长,到现在占据市场70%以上份额。
除了腾讯以外,国内的IM还有Lava,UC等软件。
1.4论文的主要内容和组织结构
本文的研究工作是设计和实现一个Android平台的即时通信系统,实现移动设备与PC终端的互通。
采用TCP/IP协议,在Google推出的Android平台下进行研究工作。
本文的研究内容主要有下面几方面:
1.Android平台[1]上即时通信系统的架构:
提出整个系统的合理架构以实现整个系统。
2.TCP/IP协议:
介绍TCP/IP协议的内容并对协议进行解析;
3.移动即时通信系统的实现:
根据提出的系统架构,并阐述本移动即时通信系统的设计和具体实现,最终对系统进行演示和运行。
本文在第二章介绍项目所用到的基本知识,对Android平台、TCP/IP协议以及MVC架构进行介绍,讨论在Android平台下程序的开发以及开发所需的环境。
然后在第三章根据项目具体要求得出需求分析,依照画出的用例模型将系统分为客户端和服务器端。
在第四章中详细的阐述的具体的功能的流程和系统实现的原理。
第五章介绍了一些重要功能实现的代码及解释。
第六章为程序的演示和运行。
1.5本章小结
本章主要介绍了项目的背景、研究的目的和意义以及国内外实时聊天系统的研究和应用现状,同时列出来整篇文章的主要章节结构,为后续的部分介绍做出了提纲。
2关键技术介绍
毕业设计是对四年学习内容的一个综合考验,因此将会涉及到多门课程的知识。
结合本课题的研究内容,本章将会把毕业设计过程中所遇到的关键技术进行一个全方位的阐述。
2.1Android平台
Android操作系统是由谷歌Google和开放手机联盟共同开发发展的移动设备操作系统,其最早的一个发布版本开始于2007年11月的Android1.0beta,并且已经发布了多个更新版本的Android操作系统。
到2010年末数据显示,仅正式推出两年多操作系统的Android在市场占有率上已经超越称霸十年的诺基亚Symbian系统。
2012年2月,Android操作系统在全球智能手机操作系统的市场份额已达52.5%,成为全球第一大智能手机操作系统[2]。
2.1.1Android特征
1.提供访问硬件的API函数,简化像摄像头、GPS等硬件的访问过程。
2.具有自己的运行时和虚拟机。
3.提供丰富的界面控件供使用者之间调用,加快用户界面的开发速度,保证Android平台上程序界面的一致性。
4.提供轻量级的进程间通讯机制Intent,使跨进程组件通信和发送系统级广播成为可能。
5.提供了Service作为无用户界面,长时间后台运行的组件。
6.支持高效、快速的数据存储方式。
2.1.2Android体系结构
采用软件堆层的架构,共分为四层如下图2-1[3]:
Linux内核
1.硬件和其他软件堆层之间的一个抽象隔离层。
2.提供安全机制、内存管理、进程管理、网络协议堆栈、和驱动程序等。
中间件层
1.由函数库和Android运行时构成。
应用程序框架
1.ActivityManager,管理应用程序的生命周期。
2.WindowsManager,启动应用程序的窗体。
3.ContentProvider,共享私有数据,实现跨进程的数据访问。
4.PackageManager,管理安装在Android系统内的应用程序。
图2-1Android的体系结构图
5.TeleghonyManager,管理与拨打和接听电话的相关功能。
6.ResourceManager,允许应用程序使用非代码资源。
7.LocationManager,管理与地图相关的服务功能。
8.NotificationManager,允许应用程序在状态栏中显示提示信息。
应用程序
1.提供一系列的核心应用程序。
2.包括电子邮件客户端、浏览器、通讯录和日历等。
2.2TCP/IP协议
TCP协议是网络通信的基础核心协议,在Java中也专门提供了Socket的类库,抽象出了基于TCP协议通信的常用方法:
TCP协议与三次握手。
本节在讲述TCP协议流程前,先来要对一些概念进行说明。
2.2.1C/S模型
在网络连接模式中,除了等网外,还有一种形式的网络,即客户机/服务器网络。
在该模型中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需的网络资源,而服务器为客户机提供网络必须的资源。
通过C/S模型可以从分利用两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,所以C/S模式具有以下几个优点:
(1)因为在客户端上有一套完整的系统软件,具有很强的交互性,系统工作人员在运用系统时可以获得出错提示、在线帮助等较强功能;
(2)由于C/S模式是配对的点对点的结构模式,因此多采用局域网的协议,并且通常是学校内部固定的从事学生学籍管理工作的用户群,所以安全性较高;
(3)因为C/S模式只有两层逻辑结构,因此网络通讯量低,传输速度快,占用网络资源少。
随着Android手机性能的不断提升,使用C/S架构将一些需要较长时间处理的功能放置到客户端。
使用户得到更好的网络传输,提升用户体验。
2.2.2TCP协议
为了实现客户端同服务器端的通信,客户端首先发送一个“SYN”数据包。
如果服务器收到SYN标记,它将发回一个“SYN+ACK”数据包。
接着,客户端为了表示收到了这个SYN+ACK信息,会向服务器发送一个最终确认信息(ACK包)。
这种SYN,SYN+ACK,ACK的步骤被称为TCP连接建立时的“三次握手”,在这之后,连接就建立起来了,这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号。
这种通信模式也叫客户端/服务器(C/S)模式如下图2-2TCP的三次握手。
由此可见,通过客户端和服务器的“三次握手”,双方可以建立畅通的通信信道,在此信道上双方互相传输数据。
图2-2TCP的三次握手
由于TCP/IP协议能够保证数据的安全传输和正确到达目标主机,本文所涉及到聊天系统采用TCP/IP协议,从而能够实现更加精确即时的消息发送和接受。
2.2.3Android的MVC架构
在系统客户端中,采用MVC模式的设计思想,提高了程序的模块化程度。
在本系统客户端中,结构图如下:
图2-3 AndroidMVC架构
视图层(View)
视图提供界面功能显示的机制,主要是用户数据的输入界面和对模型数据的显示功能,同时也包括信息的提示功能。
这方面主要是引入了Xml配置文件其中包括样式布局文件(Style)、动画效果布局文件(anim文件夹下)、图片布局文件(drawable文件夹下)。
控制层(Control)
主要负责对整个系统的流程进行调度,管理用户界面的逻辑流程,以及用户交互如何影响数据模型和数据模型如何影响用户交互过程这些东西都是有Android中的Activity完成的,在Android开发中,其配置文件AndroidManifest.xml扮演控制器的角色,文件中对各种组件视图进行相应的配置,以供模型在改变时对视图的调用。
模型层(Model)
主要对数据库的增、删、改、查等操作。
同时包含了信息的接受,发送,请求的提交。
具体到在程序中是通过Service实现数据的发送,接受。
当一个Activity启动后动态的调用bindService函数将其与Service绑定,关于这一块后面会详细解释。
2.3多线程技术
多线程在构建大型系统的时候是需要重点关注的一个重要方面,特别是在效率和性能之间做一个权衡的时候。
恰当的使用多线程可以极大的提高系统性能。
使用多线程的好处有以下几点:
(1)使用线程可以把占据长时间的程序中的任务放到后台去处理;
(2)用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度;
(3)程序的运行速度可能加快;
(4)在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。
在这种情况下我们可以释放一些珍贵的资源如内存占用等等。
而Java是一种多线程的语言,它可以同时运行多个线程处理多个任务。
同时Java内置多线程控制,这样可大大简化多线程应用程序的开发。
提供了一个Thread类,它封装了所有有关线程的控制,负责线程的启动、运行、休眠、挂起、恢复、退出和终止等一系列逻辑控制操作,并可检查线程的状态。
此外Thread类还实现了对线程行为的优先级的控制。
2.4运行环境
(1)操作系统:
WindowsXP或者Windows7
(2)数据库:
SQLite(Android提供的一个标准的数据库,支持SQL语句),MySQL5.0。
(3)Android版本:
Android2.2
(4)开发工具:
eclipse+androidSDK+MySQL5.0
2.5本章小结
本章主要介绍了Android聊天软件在开发过程中用到的关键技术,包括Android系统的体系结构、C/S模型、TCP协议以及多线程技术。
同时介绍了软件开发的硬件和软件环境。
3需求分析
上章介绍了本系统所需要的软硬件配置以及关键技术。
本章将开始着重分析系统的需求,从系统功能和可行性分析两个方面明确系统所要实现的目标,为系统的开发做好铺垫。
3.1系统的整体分析
本项目根据用户的需求,对即时通信的常用功能进行实现,系统的功能用例图如下3-1系统用例图
图3-1系统用例图
通过用例图可以知道,系统的主要实现功能大体上可以分成:
1.用户注册:
用户如果没有可用的ID,可填写相关的个人信息(要注册的ID、密码等)进行注册,向服务器提交后服务器返回相应的信息。
2.用户登录:
用户名和密码进行登录即时通信系统。
3.用户设置:
可对用户的基本信息和一些系统选项进行设置。
4.查看好友信息:
登录成功后,可以按照分组查看所有的好友概要信息(用户名、
用户ID),并可以查看某个好友的详细信息。
5.用户添加、删除好友:
根据其它用户的ID添加进自己的好友至好友列表。
6.用户向好友发送信息:
用户登录成功后可给某位好友发送信息,如果好友不在
系统将提示该好友不在。
7.用户接收好友的信息:
用户登录成功后会监听好友发送过来的信息,并显示在
相应的界面上。
8.用户注销:
用户注销,退出本系统。
系统采用C/S架构模式,所以在进一步细化过程中将系统分为服务器端和客户端两部分。
3.1.1服务器端
在C/S架构中,服务器端起到了连接客户端并且处理客户端请求的作用。
服务器的功能模块图如下图3-2,该部分的功能需求主要实现功能有:
(1)用户登录验证:
将用户提交的账号和密码在服务器端验证。
(2)信息的转发:
通过服务器将用户的信息转发给其他用户。
(3)刷新在线好友:
接到用户的信息后返回该用户的在线好友信息。
图3-2服务器功能模块图
3.1.2客户端
在C/S架构中客户端是核心部分,是该网络基本通信模型。
客户端通过服务器获得所需的信息,所以客户端的功能模块图如下图3-3所示。
其相应的功能解释已经在上面的系统用例图中解释过,这里不再累述。
图3-3客户端功能模块图
3.2可行性分析
从技术方面将本系统的开发利用MySQL5.0作为本系统的数据库,它是一个支持多用户的新型数据库,适用于中小规模的数据量需求。
使用Java作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。
从运行方面将本系统为一个小型的聊天系统,所耗费的资源非常的小,现在一般的Android手机无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。
经过了对Android平台聊天客户端的详细分析.可以确定在Android平台上对基于TCP/IP协议的客户端开发从技术上和运行方面来说是可以实现的。
3.3本章小结
本章主要明确了需求分析,根据C/S模型将系统分为服务器端和客户端。
再通过对系统的进一步分析后,得到了服务器端和客户端的功能模块图。
同时从技术和运行两方面论述了Android聊天软件的可行性分析。
4Android聊天软件系统设计
通过上一章需求分析得到(系统的运行如图4-1所示)系统的需求分析以及大致的设计方向,本章将会从系统实现原理、服务器端、客户端与数据库设计的几个方面深层次的介绍系统所涉及的关键技术,通过这些技术的实现,系统的设计阶段将会告一段落。
图4-1系统运行图
4.1系统实现原理
聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。
因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
如图4-2所示:
服务器端启动后先要调用Serversocket()函数建立一个流式套接字,并返回引用新套接字的描述符。
然后将此套接字描述符与本机的一个端口建立关联,这由ServerSocket()函数来完成。
服务器只有在调用了accept()函数进入等待状态之后才可以接受来自客户端的请求。
一旦接收到客户端通过connect()发出的连接请求,accept()将返回一个新的套接字描述符,通过套接字描述符调用相应的流的read()或write()函数即可与客户端进行数据收发。
待数据传送完成,服务器和客户端调用closes()关闭套接字。
需要说明的是服务器此时关闭的是此前由accept()所返回的新套接字,而不是先前开始创建的套接字。
在此套接字被关闭后,服务器将再次处于阻塞状态,以等待下一个客户端的连接请求并重复上述过程。
图4-2系统实现原理
4.2服务器端
服务器的流程图如下4-3所示:
图4-3服务器流程图
服务器接收到客户的信息,进行相应的判定,将信息交给相应的功能模块进行处理。
根据功能需要我将判定分为以下几类如表4-1所示:
表4-1自定义数值
名称
发送值
备注
CHAT
1
聊天
REFRESH
2
更新好友
REGISTER
3
注册
LOGIN
4
登录
ADD
5
添加好友
DELETE
6
删除好友
NOHAVE
7
该用户不存在和不在线
AGREE
8
同意添加好友
REFUSE
9
拒绝添加好友
4.2.1用户登录验证模块
为了保证用户信息的安全,将用户是否合法的判定放在服务器端,通过查询数据库得出判定结果,返回给客户端。
4.2.2信息的转发模块
采用服务器转发的方式,实现外网聊天的功能。
服务器将接收到的信息转发给其他用户。
其中信息类型包括CHAT、ADD、AGREE、REFUSE这四种类型。
(1)CHAT服务器判定为CHAT,则转发给与之通信的用户。
(2)ADD、AGREE、REFUSE三者均为同一功能——添加好友。
当用户点击添加好友时,服务器接收到类型为ADD的消息,并将他转发给要添加的好友。
好有用户可以选择同意添加好友和拒绝添加好友,分别向服务器发送一个类型为AGREE和REFUSE的信息。
服务器则根据类型不同完成数据库的添加。
4.2.3刷新好友列表模块
用户点击刷新列表后,向服务器发送REFRESH类型的消息,服务器将查询数据库将该用的好友列表封装,发送给该用户。
4.3客户端
4.3.1用户登录模块
当用户登录时,客户端由LoginActivity.java界面收集并验证用户登录信息后,封装成User对象类然后通过建立在Socket的连接之上的对象输出流将用户登录信息发送给服务器,服务器端将请求转发给UserDaoImpl处理,UserDaoImpl在收到信息后将验证数据的完整性并在对象型数据库中查找该用户名是否已经注册,然后将注册用户的信息与登录请求信息进行密码验证,在登录成功后将该用户添加到在线用户列表,最后将登录结果返回给客户端。
如果登录成功,客户端将继续启动聊天主界面。
具体流程如下图4-4所示:
图4-4用户登录流程图
4.3.2用户交互模块
用户交互模块的功能示意图如图4-5:
当用户登录成功后,客户端有MainActivity.java和ChatWindowsActivity.java界面收集用户要交互的信息后,封装成Messageinfo对象类然后通过建立在Socket的连接之上的对象输出流将用户交互信息发送给服务器,服务器端将请求类型分类转发给不同的方法处理。
图4-5用户交互图
4.3.3用户注册模块
当用户注册时,客户端由RegisterActivity.java界面收集用户注册信息后,封装成User对象类然后通过建立在Socket的连接之上的对象输出流将用户注册信息发送给服务器,服务器端将请求转发给UserDaoImpl处理,UserDaoImpl在收到信息后将数据完整保存在对象型数据库中,如果注册成功,客户端可以返回到LoginActivity.java界面登录。
流程如下图4-6所示:
图4-6用户注册流程图
4.3.4用户设置模块
当用户登录成功后,客户端有MainActivity.java界面收集用户要交互的信息后,封装成Messageinfo对象类然后通过建立在Socket的连接之上的对象输出流将信息发送给服务器,服务器端将请求类型分类转发给不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 网络 聊天 软件 设计 实现