毕业设计(论文)-基于安卓的聊天App的设计与实现.doc_第1页
毕业设计(论文)-基于安卓的聊天App的设计与实现.doc_第2页
毕业设计(论文)-基于安卓的聊天App的设计与实现.doc_第3页
毕业设计(论文)-基于安卓的聊天App的设计与实现.doc_第4页
毕业设计(论文)-基于安卓的聊天App的设计与实现.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安徽工程大学毕业设计(论文) ii 安卓聊天室安卓聊天室 appapp 的设计与实现的设计与实现 摘要摘要 07 年 google 发布 android 后,方便快捷的用户体验使得移动即时通讯成为即时通 讯市场的新宠。作为互联网时代的新兴产业,即时通讯在整个互联网市场中占据着越 来越重要的地位。 本系统是基于 android 平台开发的一款手机聊天客户端应用程序。系统基于环信 im 服务器,实现了注册登录,会话列表的获取,好友列表的获取,文本信息的即时通 讯等功能。本系统主要使用轻量型嵌入式数据库 sqlite 来存储数据,运用 x-utils 框架 实现对数据库的操作。 本文在分析了当前环境下聊天 app 的发展前景后,进行了系统的设计和实现,并 对系统进行了完整的测试。系统具有界面友好,操作简单,方便实用的特点。 关键词: android;即时通讯;环信;聊天 app; 姚旭斌:安卓聊天室 app 的设计与实现 design and implementation of android chat room abstract after 2007 google released android,because the convenient user experience,mobile im become the new darling of the instant messaging marketas an emerging industry in the age of the internet,instant messaging occupy an increasingly important position in the internet market this system is based ring letter im server,implements registration and login,session to obtain the list,get a list of friends,chat text messages and other functionsthe system main use of lightweight embedded database sqlite to store data,the use of x-utils framework to achieve operation of the database after analyzing the prospects for development in the current environment to chat app,we carried out the design and implementation of the system,and the system has been fully tested keywords:android;instant messaging;ring letter; 安徽工程大学毕业设计(论文) iiiiii 引引 言言.1 第第 1 章章 绪论绪论.2 1.1 课题背景2 1.2 即时通讯市场发展现状2 1.2.1 即时通讯市场状况2 1.2.2 即时通讯市场细分3 1.2.3 即时通讯的前景3 1.3 本文主要工作4 1.4 论文的组织结构4 第第 2 章章 android 的架构分析的架构分析 5 2.1 android特征5 2.2 android的架构6 2.3 android的工作机制7 2.3.1 activity.7 2.3.2 service .8 2.3.3 content provider.9 2.3.4 broadcast receiver9 2.4 android和其它手机操作系统的比较9 2.5 本章小结 .10 第第 3 章章 即时通讯系统即时通讯系统.11 3.1 系统概述 .11 3.2 即时通讯简介 .11 3.2 环信简介 .12 3.3 系统架构 .13 3.4 网络通信 .13 2.3.4 网络协议13 2.3.4 gprs和intenet的连接.16 3.5 android sdk 介绍 16 3.6 本章小结 .18 第第 4 章章 系统的设计与实现系统的设计与实现.19 4.1 系统项目结构设计 .20 4.2 系统客户端的设计与实现 .21 4.2.1 用户界面21 4.2.2 数据存储22 4.3 即时通讯流程描述 .24 4.3.1 判断网络是否连接24 4.3.2 用户的登录和登出24 4.3.3 会话列表的读取26 4.3.4 好友列表的读取27 4.3.5 发送和接收消息27 4.4 本章小结 .29 第第 5 章章 系统的部署及测试系统的部署及测试.30 5.1 系统部署30 5.2 系统测试30 姚旭斌:安卓聊天室 app 的设计与实现 5.3 本章小结32 结论与展望结论与展望.33 致致 谢谢.34 参考文献参考文献.35 附附 录录.36 附录 a 外文文献及其翻译.36 附录 b 主要参考文献的题录及摘要.45 安徽工程大学毕业设计(论文) vv 图标清单图标清单 表 4- 1 user 表结构22 表 4- 2 name 表结构23 图 2- 1 分层架构图.6 图 2-2 工作流程图7 图 2-3 activity 的生命周期.7 图 2-4 android 系统在市场的占有率(20142016) 9 图 3- 1 环信 sdk 开发框架16 图 3- 2 sdk 模块化.17 图 4- 1 系统整体流程图.19 图 4- 2 代码结构图 120 图 4- 3 代码结构图 221 图 4- 4 用户实体-联系图 .23 图 4- 5 登录模块.24 图 4- 6 登录界面效果图.25 图 5-1 注册界面.30 图 5-2 服务器用户列表30 图 5-3 会话列表界面31 图 5-4 好友列表界面31 图 5- 5 jack 聊天页面32 图 5- 6 tom 聊天页面.32 安徽工程大学毕业设计(论文) - 1 - 引引 言言 可能谁也不会想到,在多年前被许多人视为浪费时间的即时通讯软件如今已成为 了人们生活中不可或缺的东西。互联网络的迅速发展,4g时代的来临,网络竞争的新 一轮焦点当属移动即时通讯市场。 自 04 年起,许多网络巨头公司就发现了这一商机,微软、雅虎、网易、uc等一 批又一批即时通讯软件都潮涌而出,与原本牢牢控制着国内即时通讯市场的qq争锋相 对,开启了一场没有硝烟的战争。随着时代的发展,qq靠着庞大的用户群,依然占据 了大部分的市场,07 年android发布以后,移动即时通讯成为即时通讯市场的新宠,方 便快捷的用户体验使得即时通讯市场又掀起一波浪潮。据中国互联网信息中心(cnni c)发布的第 37 次中国互联网络发展状况统计报告表明,移动即时通讯在互联网 使用中几乎由这不可动摇的地位。 个人认为,虽然国内即时通讯市场已几乎被qq等软件垄断,但是在一些针对性的 即时通讯软件开发还存在可观的潜在利益。所以本文所研究的方向是如何快速的为自 己企业的app集成一个即时通讯系统。 姚旭斌:安卓聊天室 app 的设计与实现 - 2 - 第第 1 章章 绪论绪论 1.1 课题背景课题背景 根据中国互联网信息中心(cnnic)发布的第 37 次中国互联网络发展状况统计 报告显示,截至 2015 年 12 月底,我国网民数量达到了 6.88 亿,其中手机网民达到 90.1%,手机上网已成为网络接入的一个重要组成部分。在十大互联网应用中,即时通 信、搜索引擎和网络新闻三大互联网基础应用占据三甲,使用率均超过 80%。其中, 即时通信使用率为 90.7%,用户规模达到了 62408 万人,相比于 2014 年全年增长了 36 32 万,全年增长率 6.2。其中手机即时通讯用户规模达到了 55719 万,由此可见,移 动即时通讯在互联网使用中所占据的重要地位。 android是google公司在 2007 年 11 月推出的一个专为移动设备设计的软件平台, 它是一套真正意义上的开放性的移动设备综合平台。android由linux和java构成的开源 软件,不限制任何用户在其基础上进行开发。它满足了手机市场对于开放性平台的迫 切要求,从而如雨后春笋一般迅速崛起。 2013 年 12 月 4 日下午,工业和信息化部正式发放 4g牌照,宣告我国通信行业进 入 4g时代,如果说 3g使得移动即时通讯成为现实,那么,第四代通讯技术 2000 倍于 拨号网络的速度几乎能够满足所有用户的所有通信方式,包括视频和文件,都能在极 短的时间内传输完成,这可以说是移动即时通讯一个重要的里程碑。 1.2 即时通讯市场发展现状即时通讯市场发展现状 1.2.1 即时通讯市场状况 目前即时通讯市场已经由百家争鸣状态走向了大统一。原来形形色色的各种即时 通讯软件兴起一时,但随着用户群体的减少渐渐走向末路。这些现象是即时通讯市场 逐渐走向成熟的标识。 时至当下,要论国内现有相对流行的几款即时通讯软件,应该属腾讯的qq以及微 信(wechat)为首了,这两款在国内市场占据了主导地位。其它小部分市场被更具针 对性的阿里的钉钉,移动的飞信等等软件所瓜分。他们的共同点是有强大的服务器作 为技术支持,当然还有大量的第三方客户端的推广作为用户群体基础。 还有些老牌的即时通讯软件,也同样有着强大的服务端支持,如msn、irc、icq 、uc等等,但是因为跟不上市场需求,用户群没有持续的增长,到现在已经逐渐走向 消亡,用户群体逐渐被压缩或者被其他软件所取代。在与新软件的竞争过程中,缺乏 变化,或者被模仿,从而失去新颖性而逐渐走出用户群的视野,新生代的用户多数甚 至还没有听说过。当然,还有更多的小规模团队开发的软件,由于缺乏有力的市场宣 传,资金链支持,客户服务,最重要的是缺乏创新也无法吸引足够的使用者,也无法 坚持生存下去,销声匿迹是它必然的归宿。 安徽工程大学毕业设计(论文) - 3 - 1.2.2 即时通讯市场细分 每一个用户都会根据自己的需求和期待选择使用不同的即时通讯软件。即时通讯 ,顾名思义,指在最短的时间内在用户之间进行信息的交互,从而获得庞大的用户群 ,一般来说,商家不靠这个赚钱,这是一个免费提供的业务。当然在这个用户群的基 础上,可以推出一些增值业务,如qq的靓号,黄钻,会员等等,但这不在我们现在的 探讨范围内。我们现在所讨论的是按用户对于通讯软件基本功能需求来进行细分。 第一、按用户的性质可以分为企业用户、群体用户、个人用户: 这三者之间的不同之处在于他们所处的环境不同,使用即时通讯软件的目的不同, 虽然都是信息的交换,但是企业用户多数谈的是工作上的事,和企业相关的信息,而 群体之间交换的是更多的是一些公众信息,作为一个维系群体的存在的平台,个人之 间交换的更多的是私生活,个人交际。 第二、按所发的信息类型可分为:文字信息、文件信息、音频信息、视频信息: 这种分法就很容易理解了,主要按照用户所发信息属性来区分,当然用户之间并 不局限于单独的一种或者几种。 从当下主流的通讯软件来看,基本都涵盖了大多数情景,不论是 qq、微信,还是 钉钉。 第三、按信息对人的意义可以分为人机信息、机器信息: 1、人机信息:可以被人类所直观理解的信息,如语言,图像,文字等。 2、机器信息:简单来说,指人类无法直接理解的机器语言,是机器与机器之间直 接交互的信息。 1.2.3 即时通讯的前景 对于一些小型企业来说,即时通讯市场已经不适宜他们生存了。他们能够做的, 都已经被qq、微信等主流软件所实现,想从他们手中夺取用户资源,无异于水中捞月 。而且,研究表明,人类很容易对一个长期使用的事物产生依赖,通讯软件同样如此 ,他们将被依赖所绑定。自从qq在国内崛起后,许多企业都想从这个大蛋糕中分得一 块, 但多年过去,却没有什么结果,反而腾讯qq利用庞大的用户群优势,吞噬了其 它企业的市场,如联众的在线游戏。据 2015 年 10 月 22 日腾讯全球合作伙伴大会上pp t所演示内容,当时的qq最新月活跃用户量达到 8.23 亿,而微信也达到了 6 亿之多。 如此巨大的用户资源堪称恐怖。 即时通讯软件的重要基础就是拥有庞大的用户群,从而垄断整个市场,在这种情 景下,已经形成气候的qq、微信等很容易扼杀新兴的软件的,除非拥有更为雄厚的经 济实力和更加强大、新颖的技术实力。不过,这几乎是难以实现的,所以,从另一个 突破口来寻找机遇是必然的。 面向个人用户,是当下即时通讯市场的重要特点,这种模式一般都不直接产生直 观利润。但是对于一个企业来说,他们也存在巨大的需求,这将带来很可观的收益。 对于即时通讯的后来者来说,这无异于一个切入点。 拨开眼前的迷雾,前途是光明的,闯过曲折的道路,迎接你的是康庄大道,想要 踏入即时通讯市场,这是必然的经历。无论是通讯市场的垄断持续,还是新兴技术软 件的争锋,对用户来说,更为强大,方便,切合用户利益的软件产品才能在这个市场 中生存地更久。 姚旭斌:安卓聊天室 app 的设计与实现 - 4 - 1.3 本文主要工作本文主要工作 android作为一个开放性平台,自出现依赖深受广大用户的青睐。本文从实际应用 出发,提出了开发基于android系统的手机端即时通讯软件系统。本文的主要工作包括 : 根据环信 2.0 开发文档,以环信的云服务器为基础,对该系统进行了具体的设计和 实现。本系统拥有即时文本信息传输,管理好友列表,新消息通知,登录注册等功能 模块。该系统可在android模拟器上运行,并且取得了良好的运行效果。 1.4 论文的组织结构论文的组织结构 本文首章分析了系统的研究背景,从即时通讯市场现状、即时通讯市场细分,即 时通讯发展前景等方面介绍了即时通讯市场的发展现状。 第二章,对android的架构作了系统的分析,从android的特征,工作机制,并把它 与其它手机操作系统对比,来体现android的优势。 第三章,对比当前网络流行的即时im,对环信即时通讯云进行深入的剖析,对系 统的即时通讯机制进行分析,提出解决方案。 第四章,对系统的界面,即时通讯模块,本地数据库模块和扩展功能几个方面进 行了详细的设计及实现。 第五章,通过注册登录,获取好友列表,获取会话列表,消息的发送和接受,添 加、删除好友几个方面对系统进行测试。 第六章,总结本文的研究内容以及研究成果,通过对过程及结果的分析,整理, 归纳,得出自己的观点及存在的问题,并对今后发展的展望。 安徽工程大学毕业设计(论文) - 5 - 第第 2 章章 android 的架构分析的架构分析 android是一个以linux为基础的半开源操作系统,主要用于移动设备,由google和 开放手持设备联盟主导。android 系统最初由安迪鲁宾(andy rubin)制作,最初主 要支持手机。2005 年 8 月 17 日被google收购。2007 年 11 月 5 日,google与 84 家硬 件制造商、软件开发商及电信营运商组成开放手持设备联盟(open handset alliance )来共同研发改良android系统并生产搭载android的智慧型手机,并逐渐拓展到平板电 脑及其他领域上。随后,google以apache免费开元许可证授权方式,发布了android的 源代码。 2.1 android 特征特征 系统内核:android 是运行于 linux kernel之上,但并不是gnu/linux。android 为了达到商业应用,必须移除被gnu gpl授权证所约束的部份,例如android将驱动 程序移到 userspace,使得linux driver与 linux kernel彻底分开,以bionic取代glibc、 以ski-a取代cairo、再以opencore取代ffmpeg等等。 硬件抽象层:android 的 hal(硬件抽像层)是能以封闭源码形式提供硬件驱动 模块,为了把 android framework 与 linux kernel 隔开。 中介软件:操作系统与应用程序的沟通桥梁。 android 使用skia 为核心图形引擎,搭配opengl/es。skia与linux cairo功能相当 ,但相较于linux cairo, skia 功能还只是雏形的。2005 年skia公司被google收购,200 7 年初,skia gl源码被公开,目前skia 也是google chrome 的图形引擎。 android的多媒体数据库采用sqlite数据库系统。数据库又分为共用数据库及私用 数据库。用户可通过contentresolver类(column)取得共用数据库。 android的中间层多以java 实现,并且采用特殊的dalvik 虚拟机(dalvik virtual machine)。dalvik虚拟机是一种“暂存器型态”(register based)的java虚拟机,变量 皆存放于暂存器中,虚拟机的指令相对减少。 dalvik虚拟机可以有多个实例(instance), 每个android应用程序都用一个自属 的dalvik虚拟机来运行,让系统在运行程序时可达到优化。dalvik 虚拟机并非运行java 字节码(bytecode),而是运行一种称为.dex格式的文件。 安全权限机制:android本身是一个权限分立的操作系统。系统更多的安全功能通 过权限机制提供。android安全架构的核心设计思想是,在默认设置下,所有应用都没 有权限对其他应用、系统或用户进行较大影响的操作。安装应用时,在检查程序签名 提及的权限,且经过用户确认后,软件包安装器会给予应用权限。 姚旭斌:安卓聊天室 app 的设计与实现 - 6 - 2.2 android 的架构的架构 android的系统架构采用了分层架构的思想,如图 1 所示。从上层到底层共包括四层,分别是 应用程序层,应用程序框架层,系统库和运行时,linux内核。 图 2- 1 分层架构图 应用程序层:在这层中,系统提供了一些基础的核心应用包,如短信、联系人管 理、电子邮件、日历、系统设置、浏览器等。同事,开发者可以利用java语言编写属于 自己的应用程序,这些程序与核心应用程序是平等的。 应用程序框架层:该层作为应用程序开发的基础,在绝大多数情况下,开发人员 都在与她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图 系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和xmpp服务十 个部分。在android平台上,开发人员可以完全访问核心应用程序所使用的api框架。 并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这 些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种 应用程序组件。 系统库和android运行时:系统库包括九个子系统,分别是图层管理、媒体库、sq -lite、openglestate、freetype、webkit、sgl、ssl和libc。android运行时包括核心 库和dalvik虚拟机,前者既兼容了大多数java语言所需要调用的功能函数,又包括了an dr-oid的核心库,比如android.os、、android.media等等。后者是一种基于寄 存器的java虚拟机,dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的 管理、安全和异常的管理以及垃圾回收等重要功能。 linux内核:目前市场上广泛流行的android版本中,以linux3.8 为服务核心的andr 安徽工程大学毕业设计(论文) - 7 - -oid 5.0 系统大幅度提高了ram的读取速度和多任务处理能力,拥有良好的用户体验 。 2.3 android 的工作机制的工作机制 一个android程序由四大组件组成,它们分别是“activity” , “service” , “content p-rovider”和“broadcast receiver” 。但并不是每一个应用程序都包含这四个组件,在 应用程序中使用这些组件时,必须先在androidmainfest.xml中进行配置。android的应 用构成和工作流程图如下: 图 2-2 工作流程图 2.3.1 activity activity是用户接口程序,几乎所有的activity都要和用户打交道,原则上它会提供 给用户一个交互式的接口功能。activity自身是没有界面的,所以它会创建一个窗口, 通过setcontentview(view)接口来加载ui界面。activity可以全屏显示,也可以通过 更改主题使得其窗口化。activity一共有七大生命周期: 姚旭斌:安卓聊天室 app 的设计与实现 - 8 - 图 2-3 activity 的生命周期 (1)activity生命周期 由图 2-3 可知,一个activity正常启动过程中,调用的方法为oncreate() - onstart() - onresum();在activity被kill的时候调用的方法为onpause() - onstop() - ondesto- ry();这是一个完整的生命周期。 oncreate():在此方法中创建界面,做一些初始化操作。 onstart():变成“用户可见不可交互”状态。 onresume():变成“和用户可交互”状态。 onpause():变成“用户可见不可交互”状态。 onstop():不可见,被下一个activity所覆盖。 ondestory():activity被kill前调用的最后一个方法。 (2)activity之间的通信 在android中一个进程中可能会运行多个不同的activity实例,也可能在不同的进程 中运行不同的activity实例,所以,我们需要一些特别的机制来实现多个activity之间传 递消息,为此引入了intent机制。 intent负责对操作的动作、动作涉及数据、附加数据进行描述,android则根据此int -ent的描述,负责找到对应的组件,将 intent传递给调用的组件,并完成组件的调用。 因此,intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实 现调用者与被调用者之间的解耦。 在应用中,我们可以以两种形式来使用它: 直接intent:指定了component属性的intent(调用setcomponent(componentname)或 者setclass(context, class)来指定) 。通过指定具体的组件类,通知应用启动对应的组件 。 间接intent:没有指定comonent属性的intent。这些intent需要包含足够的信息,这样系统才能根 安徽工程大学毕业设计(论文) - 9 - 据这些信息,在在所有的可用组件中,确定满足此intent的组件。 2.3.2 service android 中 service 是运行在后台的东西,级别与 activity 差不多。既然说 service 是 运行在后台的服务,那么它就是不可见的,没有界面的东西。你可以启动一个服务 ser -vice 来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直 监听某种动作。 service 和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或 者动作。你可以在服务中开一个线程,在线程中做耗时动作。 服务一般分为两种: 本地服务:local service 用于应用程序内部。在 service 可以调用 context.startser -vice()启动,调用 context.stopservice()结束。在内部可以调用 service.stopself() 或 ser vi-ce.stopselfresult()来自己停止。无论调用了多少次 startservice(),都只需调用一次 st op-service()来停止。 远程服务: remote service 用于 android 系统内部的应用程序之间。可以定义接 口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通 过那个连接来调用服务。调用 context.bindservice()方法建立连接,并启动,以调用 co ntext.unbindservice()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没 有加载,bindservice()会先加载它。 2.3.3 content provider 当应用继承contentprovider类,并重写该类用于提供数据和存储数据的方法,就可 以向其他应用共享其数据。虽然使用其他方法也可以对外共享数据,但数据访问方式 会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读 写数据;采用sharedpreferences共享数据,需要使用sharedpreferences api读写数据。而 使用c-ontentprovider共享数据的好处是统一了数据访问方式。 2.3.4 broadcast receiver 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件。很多广播 是源自于系统代码的比如,通知时区改变、电池电量低、拍摄了一张照片或者用户 改变了语言选项。应用程序也可以进行广播比如说,通知其它应用程序一些数据下 载完成并处于可用状态。一般流程可分为一下三步: 注册广播事件:注册方式有两种,一种是静态注册,就是在androidmanifest.xml文 件中定义,注册的广播接收器必须要继承broadcastreceiver;另一种是动态注册,是在 程序中使用context.registerreceiver注册,注册的广播接收器相当于一个匿名类。两种 方式都需要intentfilter。 姚旭斌:安卓聊天室 app 的设计与实现 - 10 - 发送广播事件:通过context.sendbroadcast来发送,由intent来传递注册时用到的ac -tion。 接收广播事件:当发送的广播被接收器监听到后,会调用它的onreceive()方法, 并将包含消息的intent对象传给它。onreceive中代码的执行时间不要超过 5s,否则an-d roid会弹出超时dialog。 2.4 android 和其它手机操作系统的比较和其它手机操作系统的比较 图 2-4 android 系统在市场的占有率(20142016) 由图 2-4 不难看出,android系统的全球市场战友率已占据榜首,并且仍在逐年递 增。至于原因,我想大家来看一下各系统的对照表就明白了。 表 2- 1 手机操作系统对照表 从表中,我们可以发现android在各项指标中都有良好的表现,特别是开放性和对 第三方的支持性上尤为优异,这是它占领大多数市场的必要条件。就目前来说,andro i-d在用户体验性上可能还不如ios,但随着android 5.0 的发布,android系统的流畅性 安徽工程大学毕业设计(论文) - 11 - 大大提高,而且 5.0 的应用图标更趋向于ios的扁平化应用,随着android的发展,用户 体验性就不再成为android的弱势所在。 2.5 本章小结本章小结 本章对android的构造、特征、工作机制做了详细的介绍,通过对各个手机操作系 统的比较分析,确立android操作系统的优势,说明本问研究的必要性。 姚旭斌:安卓聊天室 app 的设计与实现 - 12 - 第第 3 章章 即时通讯系统即时通讯系统 本章介绍了即时通讯系统的总体框架和相关解决方案。以环信即时通讯云为基础 ,实现客户端与客户端之间的即时通信。 3.1 系统概述系统概述 本文中所实现的是在android平台上开发的即时通讯系统,它能够在用户之间快捷 的传递消息。现今很多流行的通讯软件,在聊天基础上开发了很多增值业务,这在很 大程度上满足了个人用户的需求。但是,这对企业用户来说过于繁琐。本系统可以直 接运用于各个app,使得app拥有即时通讯功能。如果在企业app中加入聊天功能,就 可使得工作和生活完美分离。 3.2 即时通讯简介即时通讯简介 即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。目前有 2 种架 构形式,1、一种是c/s架构,采用客户端/服务器形式,用户使用过程中需要下载安装 客户端软件,典型的代表有:qq、百度hi 、skype 、gtalk、新浪uc、msn等;2、 采用b/s架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒 介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子 商务网站的服务商,典型的代表有websitelive 、53kf、live800 等。 即时通讯(instant messaging):透过即时通讯功能,你可以知道你的亲友是否正 在线上,及与他们即时通讯。即时通讯比传送电子邮件所需时间更短,而且比拨电话 更方便,无疑是网络年代最方便的通讯方式。 即时通讯(instant messaging,简称 im)是一个终端服务,允许两人或多人使用网路即时的传递文字讯息、档案、语音与 视频交流。 多任务作业 异步性 长短沟通 媒介转换迅速 交互性 不受时空限制 即时通讯是一个终端连往一个即时通讯网路的服务。即时通讯不同於 e-mail 在于 它的交谈是即时的。大部分的即时通讯服务提供了 presence awareness 的特性显示 联络人名单,联络人是否在线上与能否与联络人交谈。 在早期的即时通讯程式中,使用者输入的每一个字元都会即时显示在双方的萤幕, 且每一个字元的删除与修改都会即时的反应在萤幕上。这种模式比起使用 e-mail 更像 是电话交谈。在现在的即时通讯程式中,交谈中的另一方通常只会在本地端按下送出 键(enter 或是 ctrl+enter)后才会看到讯息。 在网际网路上受欢迎的即时通讯服务包含了 msn messenger、aol instant messenger、yahoo! messenger、net messenger service、jabber、ucstar、icq 与 qq、gocom。 这些服务有赖於许多想法更久的(与普遍)的线上聊天媒介,如 internet relay chat 一样知名。 1970 年代早期,一种更早的即时通讯形式是柏拉图系统(plato system)。之后在 1980 年代,unix/linux 的交谈即时讯息被广泛的使用于工程师与学术界,1990 年代 安徽工程大学毕业设计(论文) - 13 - 即时通讯更跨越了网际网路交流。1996 年 11 月,icq 是首个广泛被非 unix/linux 使 用者用於网际网路的即时通讯软体。在 icq 的介绍之后,同时在许多地方有一定数量 的即时通讯方式发展,且各式的即时通讯程式有独立的协定,无法彼此互通。这引导 使用者同时执行两个以上的即时通讯软体,或者他们可以使用支援多协定的终端软体, 如 gaim、trillian 或 jabber。 近年来,许多即时通讯服务开始提供视讯会议的功能,网络电话(voip),与网路会 议服务开始整合为兼有影像会议与即时讯息的功能。于是,这些媒体的分别变的越来 越模糊。 最早的即时通讯软体是 icq,icq 是英文中 i seek you 的谐音,意思是我找你。四 名以色列青年于 1996 年 7 月成立 mirabilis 公司,并在 11 月份发布了最初的 icq 版本, 在六个月内有 85 万用户注册使用。 早期的 icq 很不稳定,尽管如此,还是受到大众的欢迎,雅虎也推出 yahoo! pager,美国在线也将具有即时通讯功能的 aol 包装在 netscape communicator,而后 微软更将 windows messenger 内建於 microsoft windows xp 作业系统中。 腾讯公司推出的腾讯 qq 也迅速成为中国最大的即时消息软件。 即时消息软件也 面临着互联互通、免费或收费问题的困扰。 instantmessaging(即时通讯、实时传讯)的缩写是 im,这是一种可以让使用者在 网络上建立某种私人聊天室(chatroom)的实时通讯服务。大部分的即时通讯服务提供 了状态信息的特性显示联络人名单,联络人是否在线及能否与联络人交谈。目前在 互联网上受欢迎的即时通讯软件包括百度 hi、ucstar、qq、msn messenger、aol instant messenger、yahoo! messenger、net messenger service、jabber、icq 等。 通常 im 服务会在使用者通话清单(类似电话簿)上的某人连上 im 时发出讯息通 知使用者,使用者便可据此与此人透过互联网开始进行实时的通讯。除了文字外,在 频宽充足的前提下,大部分 im 服务事实上也提供视讯通讯的能力。实时传讯与电子邮 件最大的不同在于不用等候,不需要每隔两分钟就按一次“传送与接收” ,只要两个人 都同时在线,就能像多媒体电话一样,传送文字、档案、声音、影像给对方,只要有 网络,无论对方在天涯海角,或是双方隔得多远都没有距离。 互联网的历史总显得具有不可思议的戏剧性:1996 年,4 位以色列人发明了 im 的 鼻祖icq“坏小子” ,那时它只是一个主要搞网上寻呼的“小玩意” ;1998 年,腾 讯研发团队为 qq 用户突破 100 人而“兴奋不已” ;2000 年前后,业内传马化腾打算把 qq 作价 100 万卖给深圳电信,但深圳电信却不要。到 2005 年腾讯却成为中国收入前 三名的互联网公司,而与腾讯一样做即时通讯的朗玛 uc,依靠市场份额和用户数排名 第二的优势,被新浪收购后换来了 3600 万美元的现金和股票。 姚旭斌:安卓聊天室 app 的设计与实现 - 14 - 3.2 环信简介环信简介 环信是移动即时通讯能力的云计算paas(platform as a service, 平台即服务) 平台 服务商(简称环信)。环信将基于移动互联网的即时通讯能力,通过云端开放的 rest ap i 和客户端 sdk 包的方式提供给开发者和企业。全面支持android、ios、web等多种 平台,在流量、电量、长连接、语音、位置、安全等能力做了极致的优化,让移动开 发者摆脱繁重的移动im通讯底层开发,最大限度地缩短产品开发周期,最短的时间内 让app拥有移动im能力。 3.3 系统架构系统架构 本系统采用c/s架构, 拥有服务器端和客户端。 客户端:在android品台上开发,通过gprs或无线网络与internet网络建立连接, 通过环信服务器实现与android客户端或pc机客户端之间的即时通讯。客户端负责初始 化通信过程,由客户端发起创建连接请求。 客户端可分为五个模块进行设计开发: 1. 登陆、注册模块:实现用户注册账号,登陆功能。拓展:实现自动登陆,掉线 自动重连。 2. 会话界面:显示当前会话列表,管理会话列表,实现会话的创建,删除。 3. 好友管理界面:显示当前好友,管理好友列表,实现好友的添加,删除。查看 好友信息,修改备注。 4. 设置界面:根据个人的喜好对于系统设置进行修改,包括新消息提醒,聊天设 置及退出登陆按钮。 5. 通讯模块:负责用户之间的数据交互,实现即时通讯。 服务器端:采用环信云作为服务器,允许多个客户端同时登录并且连接到一个服 务器上。服务器对每个客户端进行验证,为通过验证的客户端创建会话,客户端与服 务器之间的通讯就在该会话下进行。 3.4 网络通信网络通信 2.3.4 网络协议 tcp/ip是“transmission control protocol/internet protocol”的简写,中文译名为传输 控制协议/互联网络协议)协议, tcp/ip(传输控制协议/网间协议)是一种网络通信 协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往 来格式以及传送方式。tcp/ip是internet的基础协议,也是一种电脑数据打包和寻 址的标准方法。在数据传送中,可以形象地理解为有两个信封,tcp和ip就像是信封, 要传递的信息被划分成若干段,每一段塞入一个tcp信封,并在该信封面上记录有分 段号的信息,再将tcp信封塞入ip大信封,发送上网。在接受端,一个tcp软件包收集 信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,tcp将会要求重 发。因此,tcp/ip在internet中几乎可以无差错地传送数据。 对普通用户来说,并 安徽工程大学毕业设计(论文) - 15 - 不需要了解网络协议的整个结构,仅需了解ip的地址格式,即可与世界各地进行网络 通信。 大致可分为四层,每一层负责不同的功能: 1 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱 动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介) 的物理接口细节。 2网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。 在 tcp/ip 协议族中,网络层协议包括 ip 协议(网际协议) ,icmp 协议(internet 互联 网控制报文协议) ,以及 igmp 协议(internet 组治理协议) 。 3传输层,主要为两台主机上的应用程序提供端到端的通信。在 tcp/ip 协议族 中,有两个互不相同的传输协议: tcp(传输控制协议)和 udp(用户数据报协议) 。 tcp 为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它 的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分 组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略 所有这些细节。 而另一方面, udp 则为应用层提供一种非常简单的服务。它只是把称作数据包的 分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的 可靠性必须由应用层来提供。 这两种传输层协议分别在不同的应用程序中有不同的用途,这一点将在后面看到。 4 应用层负责处理特定的应用程序细节。几乎各种不同的 tcp/ip 实现都会提供 下面这些通用的应用程序: telnet 远程登录。 ftp 文件传输协议。 smtp 简单邮件传送协议。 snmp 简单网络治理协议。 另外还有许多其他应用,在后面章节中将介绍其中的一部分。 假设在一个局域网( lan)如以太网中有两台主机,二者都运行 ftp 协议。 这里,我们列举了一个 ftp 客户程序和另一个 ftp 服务器程序。大多数的网络应 用程序都被设计成客户服务器模式。服务器为客户提供某种服务,在本例中就是访 问服务器所在主机上的文件。在远程登录应用程序 telnet 中,为客户提供的服务是登 录到服务器主机上。 在同一层上,双方都有对应的一个或多个协议进行通信。例如,某个协议答应 tcp 层进行通信,而另一个协议则答应两个 ip 层进行通信。 我们注重到应用程序通常是一个用户进程,而下三层则一般在(操作系统)内核 中执行。尽管这不是必需的,但通常都是这样处理的,例如 u n i x 操作系统。 顶层与下三层之间还有另一个要害的不同之处。应用层关心的是应用程序的细节, 姚旭斌:安卓聊天室 app 的设计与实现 - 16 - 而不是数据在网络中的传输活动。下三层对应用程序一无所知,但它们要处理所有的 通信细节。 了四种不同层次上的协议。ftp 是一种应用层协议, tcp 是一种运输层协议,ip 是一种网络层协议,而以太网协议则应用于链路层上。tcp/ip 协议族是一组不同的协 议组合在一起构成的协议族。尽管通常称该协议族为 tcp/ip,但 tcp 和 ip 只是其中 的两种协议而已(该协议族的另一个名字是 internet 协议族(internet protocol suite)) 。 网络接口层和应用层的目的是很显然的前者处理有关通信媒介的细节(以太网、 令牌环网等) ,而后者处理某个特定的用户应用程序( ftp、telnet 等) 。但是,从表 面上看,网络层和运输层之间的区别不那么明显。为什么要把它们划分成两个不同的 层次呢?为了理解这一点,我们必须把视野从单个网络扩展到一组网络。 在 80 年代,网络不断增长的原因之一是大家都意识到只有一台孤立的计算机构成 的“孤岛”没有太大意义,于是就把这些孤立的系统组在一起形成网络。随着这样的发 展,到了 90 年代,我们又逐渐熟悉到这种由单个网络构成的新的更大的“岛屿”同样没 有太大的意义。于是,人们又把多个网络连在一起形成一个网络的网络,或称作互连 网( internet )。一个互连网就是一组通过相同协议族互连在一起的网络。 构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种非 凡的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太 网、令牌环网、点对点的链接和 fddi(光纤分布式数据接口)等等。 这些盒子也称作 ip 路由器(ip router) ,但我们这里使用路由器( router )这个术语。 从历史上说,这些盒子称作网关(gateway) ,在很多 tcp/ip 文献中都使用这个术语。 现在网关这个术语只用来表示应用层网关:一个连接两种不同协议族的进程(例如, tcp/ip 和 ibm 的 sna) ,它为某个特定的应用程序服务(经常是电子邮件或文件传输) 。 互连网:一个以太网和一个令牌环网,通过一个路由器互相连接。尽管这里是两 台主机通过路由器进行通信,实际上以太网中的任何主机都可以与令牌环网中的任何 主机进行通信。 我们可以划分出端系统( end system ) (两边的两台主机)和中间系统 (intermediate system) (中间的路由器) 。应用层和运输层使用端到端(end-to-end)协 议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳(hop-by- hop)协议,两个端系统和每个中间系统都要使用它。 在 tcp/ip 协议族中,网络层 ip 提供的是一种不可靠的服务。也就是说,它只是 尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方 面, tcp 在不可靠的 ip 层上提供了一个可靠的运输层。为了提供这种可靠的服务, tcp 采用了超时重传、发送和接收端到端的确认分组等机制。由此可见,运输层和网 络层分别负责不同的功能。 从定义上看,一个路由器具有两个或多个网络接口层(因为它连接了两个或多个 网络) 。任何具有多个接口的系统,英文都称作是多接口的( multihomed )。一个主机也 可以有多个接口,但一般不称作路由器, 除非它的功能只是单纯地把分组从一个接口传 安徽工程大学毕业设计(论文) - 17 - 送到另一个接口。同样,路由器并不一定指那种在互联网中用来转发分组的非凡硬件 盒。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论