基于android系统的即时通信系统研究学士学位论文.docx
《基于android系统的即时通信系统研究学士学位论文.docx》由会员分享,可在线阅读,更多相关《基于android系统的即时通信系统研究学士学位论文.docx(62页珍藏版)》请在冰豆网上搜索。
![基于android系统的即时通信系统研究学士学位论文.docx](https://file1.bdocx.com/fileroot1/2023-6/4/d87b1074-eb0e-4dd1-8d5f-fdfcb3aa80d0/d87b1074-eb0e-4dd1-8d5f-fdfcb3aa80d01.gif)
基于android系统的即时通信系统研究学士学位论文
学士学位论文
基于android系统的即时通信系统研究
摘要
即时通信IM(InstantMessaging)是目前Internet上最为流行的通讯方式,而各种各样的即时通信软件也层出不穷,服务上也提供了越来越丰富的通信服务功能。
随着互联网的发展,即时通信的运用日益广泛,即时通信软件业方兴未艾。
本设计构建了一个基于Android平台的即时通信系统,包括即时通信系统的客户端和服务器。
其中服务器采用Java语言开发的,客户端是基于Android平台采用Java语言,利用了TCP/IP协议,Socket套接字进行研究开发。
设计实现了客户端之间的文本、图片与语音信息的实时数据通信等功能。
本设计采用了常见的MVC设计模式,对系统进行了分层建模,对客户端的各个模块部分都进行分析设计,提出了系统的体系结构和整体构架设计方案,阐述了系统实现应用的关键技术,建立了可扩展的会话模型,采用松散耦合的方式设计,实现了Android平台上的移动即时通信系统。
关键字:
即时通信;Android;TCP/IP;JAVA;MVC
Abstract
IM(InstantMessaging)arethemostpopularwayofcommunication,theInternetandallkindsofInstantmessagingsoftwarealsoemergeinendlessly,Servicealsoprovidesmoreandmorerichcommunicationservicefunctions.AlongwiththedevelopmentoftheInternet,theuseofinstantcommunicationisbecomingmoreandmorewidely,ininstantmessagingsoftware.
Thisdesigntobuildareal-timecommunicationsystembasedonAndroidplatform,includinginstantcommunicationsystemoftheclientandtheserver.TheserverusingJavalanguagedevelopment,theclientisbasedontheAndroidplatformusingtheJavalanguage,usingtheTCP/IP,Socketforresearchanddevelopment.Designandimplementationoftext,images,andbetweentheclientvoiceinformationofreal-timedatacommunicationfunctions.
ThisdesignadoptscommonMVCdesignpattern,systemforthehierarchicalmodeling,analyzeseverymodulepartclientdesign,proposesthearchitectureofsystemandtheoverallarchitecturedesign,expoundsthekeytechnologyofsystemimplementation,extensiblesessionmodelisestablished,thedesignUSEStheloosecouplingway,realizedtheAndroidplatformofmobileinstantmessagingsystem.
Keywords:
IMsystem;Android;TCP/IP;Java;TheMVC
目录
1绪论1
1.1课题背景1
1.2研究的目的和意义1
1.3论文的主要内容和组织结构2
2开发环境及相关技术的介绍4
2.1开发环境4
2.2开发软件介绍4
2.2.1关于Eclipse4
2.2.2JavaJDK与AndroidSDK4
2.2.3ADT介绍5
2.2.4MySQL简介5
2.3相关开发技术介绍6
2.3.1Java基础介绍6
2.3.2Android平台8
2.3.3TCP/IP协议12
3系统需求分析16
3.1可行性分析16
3.2系统功能需求16
3.3数据流图17
3.3.1顶层数据流图17
3.3.2一层数据流图18
4系统设计19
4.1系统总体架构设计19
4.2移动客户端设计19
4.2.1客户端基本通信流程设计20
4.2.2客户端功能模块设计21
4.3服务器端设计23
5系统测试24
5.1服务器测试24
5.2客户端测试27
5.2.1登陆模块测试27
5.2.2注册模块测试29
5.2.3找朋友与设置模块测试30
5.2.4即时聊天模块测试34
5.3数据库测试37
5.3.1数据库的建立37
5.3.2数据库显示39
结论41
致谢42
参考文献43
附录A英文原文44
附录B汉语翻译49
1绪论
1.1课题背景
即时通信(InstantMessaging,IM)是指能够即时发送和接收互联网消息等的业务。
随着移动互联网的发展,互联网即时通信也在向移动化扩张。
目前,微软、腾讯、淘宝等重要即时通信提供商都提供通过手机接入互联网即时通信的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。
本课题来自于以下当前最受关注相关应用的结合点:
1.开放性移动设备Android平台目前已受到了很多人的关注,使用该平台的手机也已经十分普遍,并获得广泛的好评,基于此平台应用程序的开发也逐渐成为一个热门的方向;
2.固定网络的即时通信系统在网络中的广泛应用,用户已经将即时通信系统作为生活中不可或缺的通信工具;
3.移动网络中的无线终端设备应用日益广泛。
在中国手机的普及率已经很高,通过便携的、无线的移动设备访问Internet已经成为人们需求的方向,用户迫切希望在手机、Pad等便捷的无线终端设备上与桌面即时通信系统进行交互。
移动终端平台中实现即时通信系统作为移动通信业务的扩展,将对移动业务产生重要影响,也必将获得更为广大的市场价值
1.2研究的目的和意义
即时通信软件作为一种便捷的网络通信技术已经越来越深入人心,应用范围从单纯的网络聊天工具变成工作生活所不可缺的信息交流平台。
在互联网日益普及的今天,即时通信的用户规模也呈现出快速增长的态势。
现阶段,用手机等移动设备和即时通信软件挂钩,把以往的只能应用在PC机上的即时通信软件移植到移动设备中,让用户能够更方便地应用即时通信产品,是即时通信的发展趋势,也是IM系统软件市场发展的一个重要方向。
移动即时通信系统实现主要来自最近通信界最成功的两个应用的结合点:
固定网络中的桌面即时通信和移动网络中的短消息系统。
移动通信的即时通信服务就是在传统的基于Web通信系统的概念上,把手机的短信和手机移动互联网完美地结合起来,使用户通过移动设备终端,也能够方便地与他人以短信、移动互联网来进行实时的信息交流,它突破了传统Web界限,把即时信息转移到移动互联网上面,同时用户通过短消息或移动互联网,实现即时的交流。
可以想象,如果用户在移动终端上能够像桌面即时通信一样方便地使用并且可以访问已有的朋友列表,无线即时通信系统就能够不费力地获得极大的市场份额。
本课题的研究目的就是设计和实现一个在Android手机平台上的IM系统。
本文介绍了在Android平台上的即时通信系统的开发,作为Google推出的移动设备平台,Android平台与其它Symbian、WindowsMobile手机操作系统相比,其源代码完全开放,任何人和机构都可以免费使用,Android研发已经逐渐成为了一个热门的方向,而其他操作系统的吸引力在下降。
随着计算机和通信技术的发展,计算机的网络化已经渗透到各个应用领域,尤其是以TCP/IP协议之间的网络互连发展很快,计算机应用系统的开发由传统的单机方式转向到了网络环境的开发。
网络之间进行数据通信时,使用地址来标识网络中的计算机,有了地址以后,数据才会准确地发送到地址所指向的计算机。
TCP/IP协议使用IP地址为网络中计算机的标识,而且每台计算机的IP地址是唯一的,一般情况下,每台计算机运行的程序不止一个,因此要在应用程序中建立连接的话,还需要一个地址标识。
在TCP/IP协议书中使用端口(PORT)作为计算机上运行的应用程序的标识,因此TCP/IP协议中一个有效的网络地址包括IP地址和端口地址两个部分。
TCP/IP协议提供了两种计算机之间的通信方式:
TCP方式和UDP方式。
TCP是一种面向连接的服务,在文件传输时会先行建立连接,通过链接提供双向、有序且无重复的数据流服务、以及流量控制、差错检测和纠错等服务,从而确保文件传输的正确性。
UDP则是一种无连接的服务,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以当使用UDP时,通常要自己作接收确认的工作。
1.3论文的主要内容和组织结构
本课题的研究工作是设计和实现一个Android平台的即时通信系统,实现Android客户端之间的即时通信,使用户能通过手机等移动设备的即时通信系统客户端随时随地与他人进行即时消息通信。
本课题的研究内容主要有下面几方面:
1.Android开发平台:
平台的搭建,硬件与软件的需求;
2.Android开发平台:
介绍Android平台的相关知识及基本开发语言Java,深入阐述如何在Android平台下进行程序开发;
3.TCP/IP协议:
介绍TCP/IP协议的内容并对协议进行解析;
4.移动即时通信系统的实现:
提出系统需求,阐述本移动即时通信系统的设计和具体实现,最终对系统进行测试工作。
本文在第二章介绍项目所用到的基本知识:
对Android平台搭建的软硬件要求,Android的基础知识,Java语言的介绍以及对TCP/IP协议进行介绍。
然后在第三章根据要求来明确本系统的可行性,提出系统的需求,对系统进行总体分析。
确定系统需求后,如何建立一个相对合理的系统架构和对系统进行实现,这部分在第四章。
第五章详细介绍系统实现中,对整个系统的服务器测试、客户端测试以及会话模型进行详细测试,对客户端结构中的各个模块实现进行阐述。
最后是本课题的结论、致谢及参考文献。
2开发环境及相关技术的介绍
2.1开发环境
操作系统:
WindowsXP
Java开发包:
JDK7.0
Android开发工具包:
SDK21.1
数据库:
MySQL
开发环境,整合JDK+Eclipse+ADT+MySQL,可以这么说,JDK提供了虚拟机来运行应用程序,而Eclipse及AndroidADT插件提供了开发测试程序代码的IDE集成开发环境。
2.2开发软件介绍
2.2.1关于Eclipse
Eclipse是一个开发源代码的、基于Java的可扩展开发平台。
作为当今最流行的Java开发IDE之一,Java社群使用Eclipse以及基于Eclipse技术而来的IBMWebsphere的开发者已经超过了半数。
Eclipse本身只是一个框架和一组响应的服务,并不能够开发什么程序。
在Eclipse中几乎每样东西都是插件,实际上正是运行在Eclipse平台上的种种插件提供我们开发程序的各种功能。
同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。
Eclipse的发行版本都已经带有最基本的插件,方便了开发人员。
2.2.2JavaJDK与AndroidSDK
JDK(JavaDevelopmentKit)是Sun公司开发的用于Java平台上发的应用程序、Applet以及组件提供的开发环境。
它由Sun公司提供,其中包括Java程序运行所必须的环境以及开发过程中常用的库文件。
在使用JSP开发动态网站之前,首先必须安装的就是JDK组件。
JDK提供Java运行环境JRE(只有安装了JRE,才能运行Java开发的应用程序)以及常用的开发工具包(例如tools.jar)。
其实只需要安装JRE就可以运行Java程序了。
这里之所以安装JDK,是因为JDK已经包含有Java的源代码,从而可以随时查看这些源代码。
这样在调试程序的时候可以提供很大的帮助。
AndroidSDK:
(Androidsoftwaredevelopmentkit)软件开发工具包。
被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
因此,AndroidSDK指的是Android专属的软件开发工具包。
2.2.3ADT介绍
ADT(AndroidDevelopmentTools),安卓开发工具。
在Eclipse编译IDE环境中,需安装ADT(AndroidDevelopmentTools)Plug-in,这是Android在Eclipse上的开发工具,它在Eclipse中以一个插件形式存在。
在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。
ADT至少有以下几方面作用:
●LayoutEditor:
界面布局编辑器,支持鼠标拖放;
●CodeEditors:
代码编辑器;
●SDKtoolsintegration:
SDK工具集成;
●AndroidVirtualDevices(AVD):
安卓虚拟设备。
2.2.4MySQL简介
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。
目前MySQL被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。
对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP和LNMP,即使用Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。
由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。
2.3相关开发技术介绍
2.3.1Java基础介绍
Android上的应用程序大多是通过JAVA语言实现的,因此熟悉JAVA基础知识十分有必要,可以说系统设计能够进行下去的最基础的条件,这里我将简要介绍JAVA基础的整体知识框架。
1.对象的初始化
(1)非静态对象的初始化是在在创建对象时,对象所在类的所有数据成员会首先进行初始化,在所有类成员初始化完成之后,才调用本类的构造方法创建对象,构造方法的作用就是初始化;
(2)静态对象的初始化是在程序中主类的静态变量会在main方法执行前初始化。
不仅第一次创建对象时,类中的所有静态变量都初始化,并且第一次访问某类(注意此时未创建此类对象)的静态对象时,所有的静态变量也要按它们在类中的顺序初始化。
2.继承时,对象的初始化过程
(1)主类的超类由高到低按顺序初始化静态成员,无论静态成员是否为private;
(2)主类静态成员的初始化;
(3)主类的超类由高到低进行默认构造方法的调用。
注意,在调用每一个超类的默认构造方法前,先进行对此超类进行非静态对象的初始化;
(4)主类非静态成员的初始化;
(5)调用主类的构造方法。
3.关于构造方法
(1)类可以没有构造方法,但如果有多个构造方法,就应该要有默认的构造方法,否则在继承此类时,需要在子类中显式调用父类的某一个非默认的构造方法了;
(2)在一个构造方法中,只能调用一次其他的构造方法,并且调用构造方法的语句必须是第一条语句。
4.有关public、private和protected
(1)无public修饰的类,可以被其他类访问的条件是:
a、两个类在同一文件中,b、两个类在同一文件夹中,c、两个类在同一软件包中;
(2)protected:
继承类和同一软件包的类可访问;
(3)如果构造方法为private,那么在其他类中不能创建该类的对象。
5.抽象类
(1)抽象类不能创建对象;
(2)如果一个类中一个方法为抽象方法,则这个类必须为abstract抽象类;
(3)继承抽象类的类在类中必须实现抽象类中的抽象方法;
(4)抽象类中可以有抽象方法,也可有非抽象方法。
抽象方法不能为private;
(5)间接继承抽象类的类可以不给出抽象方法的定义。
6.final关键字
(1)一个对象是常量,不代表不能转变对象的成员,仍可以对其成员进行操作;
(2)常量在使用前必须赋值,但除了在声明的同时初始化外,就只能在构造方法中初始化;
(3)final修饰的方法不能被重置(在子类中不能出现同名方法);
(4)如果声明一个类为final,则所有的方法均为final,无论其是否被final修饰,但数据成员可为final也可不是。
7.接口interface(用implements来实现接口)
(1)接口中的所有数据均为static和final即静态常量。
尽管可以不用这两个关键字修饰,但必须给常量赋初值;
(2)接口中的方法均为public,在实现接口类中,实现方法必须用public关键字;
(3)如果使用public来修饰接口,则接口必须与文件名相同。
8.多重继承
(1)一个类继承了一个类和接口,那么必须将类写在前面,接口写在后面,接口之间用逗号分隔;
(2)接口之间可多重继承,注意使用关键字extends;
(3)一个类虽只实现了一个接口,但不仅要实现这个接口的所有方法,还要实现这个接口继承的接口的方法,接口中的所有方法均须在类中实现。
9.Java语言的特点:
(1)平台无关性:
Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。
使用Java编写的程序能在世界范围内共享。
Java的数据类型与机器无关。
(2)安全性:
Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。
它提供了安全管理器,防止程序的非法访问。
(3)面向对象:
Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。
(4)分布式:
Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。
(5)健壮性:
Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。
Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。
2.3.2Android平台
Android平台是Google于2007年11月推出的一种智能手机平台,它是由一个由操作系统、中间件、用户友好界面和应用软件组成,全面整合的软件栈。
AndroidSDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口。
Android平台的组成
Android不仅是一种操作系统,它更是一个开源的体系架构。
Android平台大量应用了开源社区的成果,并将其针对移动设备进行了一系列地优化。
Android平台包含的主要构成部分及其特性有:
·经过Google改进和调优的LinuxKernel;
·经过Google修改的Java虚拟机DalvikVM;
·大量可用的类库和应用软件,例如浏览器WebKit,数据库SQLite;
·Google已经开发好的大量现成的应用软件,并可以直接使用很多Goo#e在线服务;
·基于Eclipse的完整开发环境;
·优化过的2D和3D图形处理系统;
·多媒体方面对常见的音频、视频和图片格式提供支持;
·支持GSM,蓝牙,EDGE,3G,WiFi,摄像头,GPS。
Android应用程序框架
Android平台的架构从上至下包含了五个部分:
应用程序(Applications)、应用框架(ApplicationFramework)、开发库(Libraries)、运行时环境(AndroidRuntime)以及Linux内核(LinuxKernel),如图2.1所示:
图2.1Android应用程序框架图
●应用程序(Application)
Android会同一系列核心应用程序包一起发布,该应用程序包括email客户端,SMS短消息程序。
日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是使用Java语言编写的。
●应用程序框架(ApplicationFramework)
开发人员也可以访问核心应用程序所使用的API框架。
该应用程序的架构设计简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。
同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统.其中包括:
Ø丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(1ists),网格(Grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web洲览器。
Ø内容提供器(ContentProvide)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
Ø资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。
Ø通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。
Ø活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。
●开发库(Libraries)
Android包含一套C/C++开发库,主要包括:
libc、MediaFramework、WebKit、SGL、OpenGLES、FreeType、SQLite等。
它们被应用于Android系统的各种组件中。
这些功能通过Android应用框架展现给开发人员。
●运行时环境(AndroidRuntime)
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中