




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
理工大学学士学位论文摘 要即时通信IM(Instant Messaging)是目前Internet上最为流行的通讯方式,而各种各样的即时通信软件也层出不穷,服务上也提供了越来越丰富的通信服务功能。随着互联网的发展,即时通信的运用日益广泛,即时通信软件业方兴未艾。 本设计构建了一个基于Android平台的即时通信系统,包括即时通信系统的客户端和服务器。其中服务器采用Java语言开发的,客户端是基于Android平台采用Java语言,利用了TCP/IP协议,Socket套接字进行研究开发。设计实现了客户端之间的文本、图片与语音信息的实时数据通信等功能。本设计采用了常见的MVC设计模式,对系统进行了分层建模,对客户端的各个模块部分都进行分析设计,提出了系统的体系结构和整体构架设计方案,阐述了系统实现应用的关键技术,建立了可扩展的会话模型,采用松散耦合的方式设计,实现了Android平台上的移动即时通信系统。关键字:即时通信;Android;TCP/IP;JAVA;MVC AbstractIM (Instant Messaging) are the most popular way of communication, the Internet and all kinds of Instant messaging software also emerge in endlessly, Service also provides more and more rich communication service functions. Along with the development of the Internet, the use of instant communication is becoming more and more widely, in instant messaging software.This design to build a real-time communication system based on Android platform, including instant communication system of the client and the server. The server using Java language development, the client is based on the Android platform using the Java language, using the TCP/IP, Socket for research and development. Design and implementation of text, images, and between the client voice information of real-time data communication functions.This design adopts common MVC design pattern, system for the hierarchical modeling, analyzes every module part client design, proposes the architecture of system and the overall architecture design, expounds the key technology of system implementation, extensible session model is established, the design USES the loose coupling way, realized the Android platform of mobile instant messaging system.Key words: IM system; Android; TCP/IP; Java; The MVC目 录1 绪论11.1 课题背景11.2 研究的目的和意义11.3 论文的主要内容和组织结构22 开发环境及相关技术的介绍42.1 开发环境42.2 开发软件介绍42.2.1 关于Eclipse42.2.2 Java JDK与Android SDK42.2.3 ADT介绍52.2.4 MySQL简介52.3 相关开发技术介绍62.3.1 Java基础介绍62.3.2 Android平台82.3.3 TCP/IP协议123 系统需求分析163.1 可行性分析163.2 系统功能需求163.3 数据流图173.3.1 顶层数据流图173.3.2 一层数据流图184 系统设计194.1 系统总体架构设计194.2 移动客户端设计194.2.1 客户端基本通信流程设计204.2.2 客户端功能模块设计214.3 服务器端设计235 系统测试245.1 服务器测试245.2 客户端测试275.2.1 登陆模块测试275.2.2 注册模块测试295.2.3 找朋友与设置模块测试305.2.4 即时聊天模块测试345.3 数据库测试375.3.1 数据库的建立375.3.2 数据库显示39结 论41致 谢42参考文献43附录A 英文原文44附录B 汉语翻译49IV1 绪论1.1 课题背景即时通信(Instant Messaging, IM)是指能够即时发送和接收互联网消息等的业务。随着移动互联网的发展,互联网即时通信也在向移动化扩张。目前,微软、腾讯、淘宝等重要即时通信提供商都提供通过手机接入互联网即时通信的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。本课题来自于以下当前最受关注相关应用的结合点:1开放性移动设备Android平台目前已受到了很多人的关注,使用该平台的手机也已经十分普遍,并获得广泛的好评,基于此平台应用程序的开发也逐渐成为一个热门的方向;2固定网络的即时通信系统在网络中的广泛应用,用户已经将即时通信系统作为生活中不可或缺的通信工具;3移动网络中的无线终端设备应用日益广泛。在中国手机的普及率已经很高,通过便携的、无线的移动设备访问Internet已经成为人们需求的方向,用户迫切希望在手机、Pad等便捷的无线终端设备上与桌面即时通信系统进行交互。移动终端平台中实现即时通信系统作为移动通信业务的扩展,将对移动业务产生重要影响,也必将获得更为广大的市场价值1.2 研究的目的和意义即时通信软件作为一种便捷的网络通信技术已经越来越深入人心,应用范围从单纯的网络聊天工具变成工作生活所不可缺的信息交流平台。在互联网日益普及的今天,即时通信的用户规模也呈现出快速增长的态势。现阶段,用手机等移动设备和即时通信软件挂钩,把以往的只能应用在PC机上的即时通信软件移植到移动设备中,让用户能够更方便地应用即时通信产品,是即时通信的发展趋势,也是IM系统软件市场发展的一个重要方向。移动即时通信系统实现主要来自最近通信界最成功的两个应用的结合点:固定网络中的桌面即时通信和移动网络中的短消息系统。移动通信的即时通信服务就是在传统的基于Web通信系统的概念上,把手机的短信和手机移动互联网完美地结合起来,使用户通过移动设备终端,也能够方便地与他人以短信、移动互联网来进行实时的信息交流,它突破了传统Web界限,把即时信息转移到移动互联网上面,同时用户通过短消息或移动互联网,实现即时的交流。可以想象,如果用户在移动终端上能够像桌面即时通信一样方便地使用并且可以访问已有的朋友列表,无线即时通信系统就能够不费力地获得极大的市场份额。本课题的研究目的就是设计和实现一个在Android手机平台上的IM系统。本文介绍了在Android平台上的即时通信系统的开发,作为Google推出的移动设备平台,Android平台与其它Symbian、Windows Mobile手机操作系统相比,其源代码完全开放,任何人和机构都可以免费使用,Android研发已经逐渐成为了一个热门的方向,而其他操作系统的吸引力在下降。随着计算机和通信技术的发展,计算机的网络化已经渗透到各个应用领域,尤其是以TCP/IP协议之间的网络互连发展很快,计算机应用系统的开发由传统的单机方式转向到了网络环境的开发。网络之间进行数据通信时,使用地址来标识网络中的计算机,有了地址以后,数据才会准确地发送到地址所指向的计算机。TCP/IP协议使用IP地址为网络中计算机的标识,而且每台计算机的IP地址是唯一的,一般情况下,每台计算机运行的程序不止一个,因此要在应用程序中建立连接的话,还需要一个地址标识。在TCP/IP协议书中使用端口(PORT)作为计算机上运行的应用程序的标识,因此TCP/IP协议中一个有效的网络地址包括IP地址和端口地址两个部分。TCP/IP协议提供了两种计算机之间的通信方式:TCP方式和UDP方式。TCP是一种面向连接的服务,在文件传输时会先行建立连接,通过链接提供双向、有序且无重复的数据流服务、以及流量控制、差错检测和纠错等服务,从而确保文件传输的正确性。UDP则是一种无连接的服务,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以当使用UDP时,通常要自己作接收确认的工作。1.3 论文的主要内容和组织结构本课题的研究工作是设计和实现一个Android平台的即时通信系统,实现Android客户端之间的即时通信,使用户能通过手机等移动设备的即时通信系统客户端随时随地与他人进行即时消息通信。本课题的研究内容主要有下面几方面:1Android开发平台:平台的搭建,硬件与软件的需求;2Android开发平台:介绍Android平台的相关知识及基本开发语言Java,深入阐述如何在Android平台下进行程序开发;3TCP/IP协议:介绍TCP/IP协议的内容并对协议进行解析;4移动即时通信系统的实现:提出系统需求,阐述本移动即时通信系统的设计和具体实现,最终对系统进行测试工作。本文在第二章介绍项目所用到的基本知识:对Android平台搭建的软硬件要求,Android的基础知识,Java语言的介绍以及对TCP/IP协议进行介绍。然后在第三章根据要求来明确本系统的可行性,提出系统的需求,对系统进行总体分析。确定系统需求后,如何建立一个相对合理的系统架构和对系统进行实现,这部分在第四章。第五章详细介绍系统实现中,对整个系统的服务器测试、客户端测试以及会话模型进行详细测试,对客户端结构中的各个模块实现进行阐述。最后是本课题的结论、致谢及参考文献。2 开发环境及相关技术的介绍2.1 开发环境操作系统:Windows XPJava开发包:JDK7.0Android开发工具包:SDK21.1数据库:MySQL开发环境,整合JDK+Eclipse+ADT+MySQL,可以这么说,JDK提供了虚拟机来运行应用程序,而Eclipse及Android ADT插件提供了开发测试程序代码的IDE集成开发环境。2.2 开发软件介绍2.2.1 关于EclipseEclipse是一个开发源代码的、基于Java的可扩展开发平台。作为当今最流行的Java开发IDE之一,Java社群使用Eclipse以及基于Eclipse技术而来的IBM Websphere的开发者已经超过了半数。Eclipse本身只是一个框架和一组响应的服务,并不能够开发什么程序。在Eclipse中几乎每样东西都是插件,实际上正是运行在Eclipse平台上的种种插件提供我们开发程序的各种功能。同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。Eclipse的发行版本都已经带有最基本的插件,方便了开发人员。2.2.2 Java JDK与Android SDKJDK(Java Development Kit)是Sun 公司开发的用于Java平台上发的应用程序、Applet以及组件提供的开发环境。它由Sun公司提供,其中包括Java程序运行所必须的环境以及开发过程中常用的库文件。在使用JSP开发动态网站之前,首先必须安装的就是JDK组件。JDK提供Java运行环境JRE(只有安装了JRE,才能运行Java开发的应用程序)以及常用的开发工具包(例如tools.jar)。其实只需要安装JRE就可以运行Java程序了。这里之所以安装JDK,是因为JDK已经包含有Java的源代码,从而可以随时查看这些源代码。这样在调试程序的时候可以提供很大的帮助。Android SDK:(Android software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。因此,Android SDK 指的是Android专属的软件开发工具包。2.2.3 ADT介绍ADT(Android Development Tools),安卓开发工具。在Eclipse编译IDE环境中,需安装ADT(Android Development Tools)Plug-in,这是Android在Eclipse上的开发工具,它在Eclipse中以一个插件形式存在。在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。ADT至少有以下几方面作用:l Layout Editor:界面布局编辑器,支持鼠标拖放;l Code Editors:代码编辑器;l SDK tools integration:SDK工具集成;l Android Virtual Devices(AVD):安卓虚拟设备。2.2.4 MySQL简介MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。目前Internet上流行的网站构架方式是LAMP和LNMP,即使用Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。2.3 相关开发技术介绍2.3.1 Java基础介绍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.2 Android平台Android平台是Google于2007年11月推出的一种智能手机平台,它是由一个由操作系统、中间件、用户友好界面和应用软件组成,全面整合的软件栈。Android SDK提供了在Android平台上使用Java语言进行Android应用开发必须的工具和API接口。Android平台的组成Android不仅是一种操作系统,它更是一个开源的体系架构。Android平台大量应用了开源社区的成果,并将其针对移动设备进行了一系列地优化。Android平台包含的主要构成部分及其特性有:经过Google改进和调优的Linux Kernel;经过Google修改的Java虚拟机Dalvik VM;大量可用的类库和应用软件,例如浏览器WebKit,数据库SQLite;Google已经开发好的大量现成的应用软件,并可以直接使用很多Goo#e在线服务;基于Eclipse的完整开发环境;优化过的2D和3D图形处理系统;多媒体方面对常见的音频、视频和图片格式提供支持;支持GSM,蓝牙,EDGE,3G,WiFi,摄像头,GPS。Android应用程序框架Android平台的架构从上至下包含了五个部分:应用程序(Applications)、应用框架(Application Framework)、开发库(Libraries)、运行时环境(Android Runtime)以及Linux内核(Linux Kernel),如图2.1所示:图2.1 Android应用程序框架图应用程序(Application)Android会同一系列核心应用程序包一起发布,该应用程序包括email客户端,SMS短消息程序。日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用Java语言编写的。应用程序框架(Application Framework)开发人员也可以访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统其中包括: 丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(1ists),网格(Grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web洲览器。 内容提供器(Content Provide)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layout files)。 通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息。 活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。开发库(Libraries)Android包含一套CC+开发库,主要包括:libc、Media Framework、WebKit、SGL、OpenGL ES、FreeType、SQLite等。它们被应用于Android系统的各种组件中。这些功能通过Android应用框架展现给开发人员。运行时环境(Android Runtime)Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。Dalvik虚拟机执行(dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的dX”工具转化成dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。Linux内核(Linux Kernel)Android的核心系统服务依赖于Linux 2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。整体架构上来看,Android相比其它平台显示出了自身的特点,如集成了WebKit浏览器、Dalvik虚拟机等模块。Android应用程序类型分析Android的API主要包含几个部分:Views、Intents、Activity、Permissions、Resource Type、Services、Notifications、Content Providers以及XML支持。比较重要且常用的如Views用于提供界面设计的接口;Services提供运行在后台的服务;Content Provider定义了一组系统级的数据库;Notification为用户提供提醒的API等。这些都可以通过SDK附带的文档查询到。Android上的应用程序可以分成四种主要类型:活动、服务、接收器和ContentProvider。活动(Activity)活动是最常用的Android应用程序形式。活动在一个称为视图类的帮助下,为应用程序提供UI。视图类实现各种UI元素,如文本框、标签、按钮等。一个应用程序可以包含一个或多个活动。这些活动通常与应用程序中的屏幕形成一对一的关系。应用程序通过startActivity()或startSubActivity()方法从一个活动转到另一个活动。如果应用程序只需切换到新的活动,使用前一个方法;如果需要异步的调用响应模式,就使用后一个方法。但均需要通过方法参数传递一个Intent,由操作系统负责决定哪个活动最适合满足指定的Intent。Intent是Google在Android体系结构中引入的一种新颖的设计元素,Intent是一种构造,应用程序可以通过它发出相应的请求。应用程序可以按照相似或互补的方式进行注册IntentFilter,表明他们有能力或有兴趣执行各种请求或Intent。视图(View)Android活动通过视图显示UI元素。视图采用以下布局设计之一:LinearVertical,LinearHorizontal,Relative,Table。选择一种布局之后就可以用各个视图显示UI。视图元素由一些UI元素组成,包括:Button,EditText,CheckBox,RadioButton,List,Grid,DatePicker,TimePicker等。视图是在一个XML文件中定义的。每个元素有一个或多个属于Android命名空间的属性。服务(Service)和接收器(Receiver)与其他多任务计算环境一样,Android可以在后台运行着一些应用程序。Android把这种应用程序称为服务。服务是没有UI的Android应用程序。接收器是一个应用程序组件,它接收请求并处理Intent。与服务一样。接收器在一般情况下也没有UI元素。服务和接收器通常都在AndroidMainfest.xml文件中注册。通过Content Provider进行数据管理Content Provider是Android的数据存储抽象机制。Content Provider对数据存储的访问方法进行抽象,在许多方面起到数据库服务器的作用。对数据存储中数据的读写操作应该通过适当的Content Provider传递而不是直接访问文件或数据库。2.3.3 TCP/IP协议TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的七层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这七层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通信协议采用了四层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这四层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层(主机-网络层):接收IP数据包并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。TCP/IP协议的功能及工作方式IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向“上”传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。UDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。协议的优势在长期的发展过程中,IP逐渐取代其他网络。这里是一个简单的解释,IP传输通用数据。数据能够用于任何目的,并且能够很轻易地取代以前由专有数据网络传输的数据。下面是一个普通的过程: 一个专有的网络开发出来用于特定目的。如果它工作很好,用户将接受它。 为了便利提供IP服务,经常用于访问电子邮件或者聊天,通常以某种方式通过专有网络隧道实现。隧道方式最初可能非常没有效率,因为电子邮件和聊天只需要很低的带宽。通过一点点的投资IP 基础设施逐渐在专有数据网络周边出现。 用IP取代专有服务的需求出现,经常是一个用户要求。 IP替代品过程遍布整个因特网,这使IP替代品比最初的专有网络更加有价值(由于网络效应)。 专有网络受到压制。许多用户开始维护使用IP替代品的复制品。 IP包的间接开销很小,少于1%,这样在成本上非常有竞争性。人们开发了一种能够将IP带到专有网络上的大部分用户的不昂贵的传输媒介。 大多数用户为了削减开销,专有网络被取消。TCP的运输连接管理TCP是面向连接的协议。运输连接时用来传送TCP报文的。TCP的运输连接的建立和释放是每一次面向连接的同种必不可少的过程。因此,运输连接就有三个阶段,即连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。在连接建立过程中要解决以下三个问题:(1)要使每一方都能够确知对方的存在。(2)要允许双方协商上一些参数(如最大报文段、最大窗口大小、服务质量等)。(3)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client),而被动等待连接建立的应用进程叫做服务器(server)。TCP/IP三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。Backlog参数:表示未连接队列的最大容纳数目。SYN-ACK 重传次数 服务器发送完SYNACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。3 系统需求分析3.1 可行性分析经济可行性:由于本系统的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平的提高,对自身的经济要求也不高,只要有一台能运行Eclipse软件以及Android虚拟机的电脑即可以进行本课题的开发,所以不用考虑经济问题。技术可行性:本系统是在Android平台下利用Java作为基本开发语言,开发一个能运行在Android系统下的客户端以及纯Java服务器,并且利用MySQL作为本系统的数据库,它是一个支持多用户的数据库,适用范围比较广。Java语言提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能的系统提供了保障,保证了代码的模块化要求。用ADT模拟Android系统手机运行环境,给代码的调试提供了很好的开发环境。将Eclipse软件作为基本的开发工具,Android SDK以插件形式存在于Eclipse中。运行可行性:本系统为一个小型的Android即时通信系统,所以耗费的资源小,一般的PC都能满足系统需求。因此,本系统在运行上是可行的。综上所述,本系统的设计与实现与开发在技术上和硬件设备上的条件都是满足的,所以,它的技术是可行的。3.2 系统功能需求本系统主要通过客户端,服务器端来实现即时通信的基本功能。(1)客户端a) 用户登录界面及结果;b) 用户注册界面及结果;c) 用户聊天界面及结果;d) 用户查找好友界面及结果;e) 用户设置界面及结果;f) 用户退出界面及结果;(2)服务器端a) 处理用户登录;b) 处理用户注册;c) 处理用户发送消息;d) 处理用户接收消息;e) 处理用户增删改请求;f) 处理用户退出;3.3 数据流图3.3.1 顶层数据流图图3.1顶层数据流图显示聊天用户之间进行信息交流,是通过即时通信系统进行双向的数据交换。图3.1 顶层数据流图3.3.2 一层数据流图图3.2是一层数据流图是对顶层数据流图的进一步理解,更详细的描述了数据的传输。图3.2 一层数据流图4 系统设计本章主要介绍了系统的总体架构以及服务器端和客户端的设计方案。系统采用C/S 结构,客户端是基于Android手机操作系统开发的即时通信软件,该即时通信软件采用 Java编程语言开发和MVC的设计模式,并采用自主设计的服务器和MySQL数据库构建。服务器主要是负责客户端发送的身份验证请求、连接请求、数据交换请求等,并且配合MySQL的数据储存功能,最后实现客户端之间的即时通信。4.1 系统总体架构设计本系统采用客户端(C)/服务器(S)架构的体系结构,具有客户端和服务器两部分。而不是一些即时通信系统使用的客户端(C)/客户端(C)的体系结构,所以一个客户端发给另一个客户端的消息都必须经过服务器端。客户端:基于Android平台进行开发的,通过服务器实现Android客户端之间的即时通信,进行即时通信时由客户端负责向服务器发起创建连接请求。服务器端:服务器负责处理客户端软件发送的身份验证请求、连接请求、数据交换等,配合MySQL的数据存储功能实现Android手机之间的即时通信。当客户端发出连接请求到服务器,服务器对每个客户端的连接进行认证,认证通过的客户端能进行彼此通信。系统总体架构设计图中有包括服务器端、客户端两个部分。其中客户端提供了常用的即时通信系统服务包括用户注册、用户登录、好友列表显示、文本信息收发、语音图片收发、查找好友,设置等等。服务器端与数据库连接,对客户端的请求给予验证并做出相对应的响应。4.2 移动客户端设计系统移动客户端采用的是MVC的设计模式,主要是将视图层、控制逻辑层以及数据模型层进行分离,实现客户端程序的高内聚,低耦合,并且有效的提高了代码的重用性,大大降低了系统的维护成本。客户端主要实现的是与服务器端之间的通信,向服务器端发送和接收相应的请求,完成用户注册、用户登录、获取好友列表、消息收发、语音聊天、设置、查找好友等基本功能。4.2.1 客户端基本通信流程设计向用户显示登录/注册功能的窗口:(1)用户在登录框中输入用户名和密码,使客户端和服务器开启一个会话,建立连接与服务器通信,一旦通过以上验证程序客户端将与服务器建立连接,然后开始实现通信;(2)用户成功登录后,显示主窗口,其中将显示用户的好友,以及与好友之间的聊天记录;(3)用户登录之后,客户端与服务器建立TCP套接字连接,刷新客户端界面完成用户请求的功能,所有响应由相应模块处理。客户端通信流程如图4.1所示:图4.1 客户端通信流程图4.2.2 客户端功能模块设计本系统的即时通信客户端主要实现了以下几个功能:a) 向用户提供一个良好的用户界面;b) 向服务器端传输用户的请求;c) 解析来自服务器端的响应。客户端与好友连接和通信是通过服务器端来完成的,所有的请求必须都经过服务器 端处理。客户端到服务器端的连接是通过启动一个connect 建立套接字连接。用户发送请求给服务器端,服务器端接受包括认证、注册等各种请求,请求包通过客户端的连接发送给服务器端,经过处理接收到的请求包、认证成功、返回用户的好友列表及聊天信息等。系统移动客户端可以分为以下几大功能模块。a) 用户注册模块:主要功能是注册一个新用户,让新用户能够登录服务器并可以与 自己的好友进行即时通信;b) 用户登录模块:主要功能是登录服务器并与好友进行通信;c) 好友列表显示模块:主要是获取用户的好友列表及与好友聊天记录,以便与好友进行通信;d) 聊天模块(消息发送、消息接收):主要功能是给好友发送消息并能接收好友发送来的消息;e) 找朋友模块:通过查找用户名,查看用户信息及添加好友;f) 设置模块:用户个人信息的更新及保存,退出系统。客户端的代码实现结构如图4.2所示:图4.2 客户端的代码实现结构客户端的用户界面布局文件的目录如图4.3所示:图4.3 用户界面布局文件的目录4.3 服务器端设计本系统的服务器采用自己编写的服务器,服务器主要实现的功能是实现用户的各种请求,包括:登陆请求,新用户注册,对数据库中用户信息的更新,即时信息的转发与接收等等。本系统的即时通信服务器主要实现了以下几个功能:a) 管理与数据库的连接和与数据库信息的交流;b) 响应客户端的各类请求。服务器的代码实现结构如图4.4所示:图4.4 服务器的代码实现结构5 系统测试5.1 服务器测试在测试整个系统时,首先应该打开服务器,使其保持运行状态。在Eclipse中点击WoLiaoServer-src-com.woliao下的TestServer.java,右键-Run As-Java Application,然后如图5.1所示,表明服务器正常运行。图5.1 服务器运行图由于系统运行的是Android SDK 2.1,现在Android的智能机几乎都是运行在2.3以上的,所以在整个测试环境中都是使用Android 的虚拟机进行运行测试的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城乡房屋互换协议书范本
- 售后客服终止协议书模板
- 寺院转让接管协议书模板
- 山东猫咪无偿领养协议书
- 小吃收徒弟合同协议范本
- 安装玻璃阳光房合同范本
- 商户承包合同协议书模板
- 定制保温门工程合同范本
- 常见的航次租船合同范本
- 工地合作利润协议书范本
- 五社联动推进基层治理现代化
- 初中历史新教材培训心得体会
- 车间5S现场管理标准图
- 《高压开关柜》课件
- 装配钳工高级试题(附答案)
- 【数学】一元一次方程的应用(第2课时)课件 2024-2025学年北师大版七年级数学上册
- 甘肃省行政执法人员综合法律知识考试试题库
- GB/T 44739-2024枸杞及其制品中枸杞多糖的测定离子色谱法
- DB41T 1176-2015 危险化学品重大危险源安全评估导则
- 论文不涉密证明模板
- 《钢铁是怎样炼成的》读书分享课件
评论
0/150
提交评论