企业即时通信系统客户端的设计与实现论文_第1页
企业即时通信系统客户端的设计与实现论文_第2页
企业即时通信系统客户端的设计与实现论文_第3页
企业即时通信系统客户端的设计与实现论文_第4页
企业即时通信系统客户端的设计与实现论文_第5页
已阅读5页,还剩61页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、西安电子科技大学学士学位论文企业即时通信系统 学院: 软件学院 专业: 软件工程 班级: 姓名: 导师: 摘要随着网络通信技术的发展,网络已经成为人们获取信息,交流信息以及管理信息的重要途径。其中即时通信的出现无疑是网络通信领域的一场革命,他使人们能够随时随地的同任何地方的人进行快捷的交流。如今,网络即时通信已经逐步发展成为应用于各行各业的信息交流工具。本论文通过设计和实现一款集即时通信与内部组织管理于一体的企业内部即时通信系统,讨论并分析在协议的基础上设计并实现一个结构的即时通信系统的详细过程。首先,介绍即时通信系统的现状,其次,分析和设计客户端与服务器端之间的通信协议,为上层的数据包交换以

2、及系统功能实现模块提供规范的数据交流格式。然后,对系统中最重要的部分即数据包模块,进行详细的设计说明以及实现方案的阐述,最后,描述即时通信系统整体的系统功能的逻辑处理流程,以及实现过程。在当前这个信息时代,由于企业即时通信系统为公司提供的便捷的员工交流方式以及规范的公司组织管理功能,所以即时通信系统的设计与实现在各行各业中具有非常广泛的应用前景。关键词:即时通信 企业应用程序 , , .  . , . , . , 、 . , . , . , . . : 目录摘要目录第一章 绪论课题背景和意义企业即时通信系统概念主要功能主要应用领域企业即时通信系统现状论文的主要工作和章节安排第二章 企

3、业即时通信系统需求分析企业即时通信系统的需求分析企业即时通信系统的用例说明企业即时通信系统的功能描述第三章 通信模块企业即时通信系统的通信协议数据收发方式的设计和数据包结构的定义通讯协议数据包在实现过程中的定义本节小结数据包传输模块的设计与实现套接字的模型选择和多线程的运用数据包传输模块的设计数据包传输模块的实现本节小结第四章 业务逻辑模块引言登陆登陆设置登陆主界面组织结构群组列表公告列表点对点通信发送信息传输文件群组会议创建群组邀请员工加入群组将员工移除群组群组聊天上传共享文件下载共享文件日常公告管理发布公告删除公告查看公告评论评论公告工作邮件发送邮件邮件即时提醒本章小结第五章 总结与展望全

4、文总结展望结束语致谢参考文献附录第一章 绪论1.1 课题背景和意义近年来,随着的飞速发展,计算机网络得到了越来越广泛的应用,并且已经逐步进入了各行各业。自迈入信息时代以来,人们对沟通交流的需求和依赖也越来越强烈,各行各业对信息交流的要求也越来越高。如今,通过各种即时通信软件,人们已经可以随时的与远距离甚至世界各地的人进行实时的聊天交流,这样的交流给人们带来了极大的便捷和大量的经济节省。因此,即时通信( )在人们的生活工作和学习中得到了更广泛的应用。目前,网络上已经有不少即时通信软件在社会公众中流行,像,腾讯,新浪等,都是国内人们所熟知的知名流行即时通信软件,其技术方面也都处于国际领先水平。同时

5、,企业内部即时通信领域,也涌现出了一大批的产品,如腾讯的、汇讯的、北京世纪奥通科技有限公司的、上海艾睦网城科技有限公司的云办公,移动公司的移动企业飞信。本论文将通过开发一个具体的企业即时通信工具,以现有的各种技术,结合实际的开发过程讲解一些开发所需的基本知识,并讨论系统中关键环节的设计策略和最终的解决方案。 1.2 企业即时通信系统1.2.1 概念,全称为 ,中文翻译为企业即时通讯。企业即时通讯是一个企业级终端服务,一般其帐号为企业拥有,由企业注册完成后统一分配给员工。产品功能上以即时通讯为基础,贯穿搭载多种办公应用,企业成员以及企业间使用网络即时传递文字信息、档案、语音与视频交流,同时企业可

6、通过企业即时通讯产品完成通知的下达与分发,目前,企业即时通讯已呈现出向集成通讯、办公管理等综合平台化产品服务方向转变的趋势。企业即时通讯产品以是否连接互联网作为划分依据,主要分为局域网型企业即时通讯产品和互联网型企业即时通讯产品。企业即时通讯主要特征为:1. 实现企业内部员工之间的的即时沟通,这是企业即时通信系统的最主要功能。2. 可以对企业组织配置进行管理,这是企业对企业即时通信系统的额外的功能诉求。3. 满足企业的办公需求,例如企业公告功能以及员工之间文档资料的交互等。1.2.2 主要功能企业即时通信系统以即时通信为核心,集组织管理、即时聊天、数据交换、群组会议等功能为一体,为企业内部员工

7、提供即时、快捷的交流方式。企业即时通信系统的主要功能介绍如下:Ø 登陆:公司统一为每个员工注册账号,员工根据公司提供的账号和密码可以登录系统。Ø 即时聊天:公司员工可以实时的与公司其他任一员工进行交流,员工可以设置交流时文字的大小、字体、颜色等。Ø 文件传输:公司员工可以把本机上的文件(如文档、图片以及其它应用程序等)发送给其他公司员工。Ø 群组会议:员工可以创建群组并邀请其他员工加入群组,群组成员可以在群组中展开各种会议讨论,每个群组成员可以设置自己交流所用的文字的大小、字体、颜色等。Ø 共享文件:群组成员可以将本机上的文件(如文档、图片以及

8、其它应用程序等)共享给其它群组成员,其他群组成员在需要该文件时可直接在群组中下载,无需再找文件持有这拷贝。Ø 浏览组织信息结构:公司员工可以查看公司的部门组成以及每个部门的人员配置。Ø 日常公告管理:公司有重要通知时,可以在公告发布页面发布公司公告,公司员工会及时收到公司公告。员工可以对公司公告自由的进行评论并可以查看其它公司员工对此公告的评论。1.2.3 主要应用领域随着市场的变化,对企业即时通信系统的要求也在变化。一个具有企业自己特色的集信息管理和即时通信为一体的内部应用软件,能够使一个企业或者团队更像一个整体,同时也能够给企业的管理和信息交流带来极大的便利,在一定程度

9、上提高工作效率。1.2.4 企业即时通信系统现状全称是 ,意为企业即时通讯。企业即时通讯是自年国内的诞生进入了起步阶段,在经历了十年的发展时期后,目前的市场上已经是群雄割据,目前市场上已经有一些比较流行的企业即时通信系统,如腾讯的、汇讯的、北京世纪奥通科技有限公司的、上海艾睦网城科技有限公司的云办公,移动公司的移动企业飞信。企业即时通信系统从形式上主要分为两类,一类是需要在企业内部部署服务器的,如腾讯公司的、汇讯公司的,其中文档归类、整理等功能都需要用到企业提供的服务器来进行存储。另一类是不需要部署而是基于互联网的,如中国移动的企业飞信、互联网办公室的,通过组建出一个互联互通的办公环境来实现企

10、业即时通讯的功能,同时对用户提供各类办公应用,如聊天功能、企业邮箱、群组会议等。根据权威调研机构的结果反应国内至少的企业监控甚至禁止员工使用,而在国外这种情况也不乐观,英国企业禁止员工使用、雅虎通在内的公众即时通信软件。1.3 论文的主要工作和章节安排本论文旨在设计一个面向企业内部的功能实用、性能良好的即时通信系统,并对其中关键模块做详细的分析和实现的说明。在系统的设计和实现中,要突出系统的模块化,各模块间相对独立,通过模块间的接口交互工作,使整个系统层次、模块清晰。在数据传输方面,要注意数据的封装,使数据尽可能结构化,保持良好的一致性。根据上述要求,论文中详细阐述了系统的各个关键模块的设计方

11、案和实现方法,主要工作如下:1) 对系统的需求说明做出详细描述以指导后续的开发。2) 对系统所需要的通信协议作出详细的设计,并给出实现方案。3) 对系统中数据包传输模块的设计做详细的说明,阐述数据包传输模块在系统中的工作流程以及该模块的实现方案。4) 结合系统整体结构,详细给出系统各个功能的实现,并展示系统功能实现后的运行结果。第2章 第二章 企业即时通信系统需求分析2.1 企业即时通信系统的需求分析员工考勤管理系统是根据日常工需要设立登陆、即时聊天、文件传输、群组会议、文件共享、公告管理、评论公告等功能模块。本系统的主要目的就是通过相关技术,以即时通信为核心,集组织管理、即时聊天、数据交换、

12、群组会议等功能为一体,为企业内部员工提供即时、快捷的交流方式,提高公司正常的工作效率。本系统主要由五大功能,仅从业务层面陈述本软件产品所应具有的主要功能,在描述功能时应该针对每一项需求准确地描述其各项规格说明。本产品拟适用于中小型公司和企业内部办公使用,对于系统维护人员,要求熟悉计算机并且有一定的编程基础。本系统可运行于 及以上版本的操作系统上,使用 平台,数据库采用 ,服务器需要安装及 。2.2 企业即时通信系统的用例说明本系统的用例图如图用例图所示。用户在登陆系统后可以进行其它操作。主要是对系统的功能模块在不同的需求下进行使用。主要有个功能模块,登陆、点对点通信、群组会议、组织结构、日常公

13、告管理、内部邮件。而每个功能模块又分为若干子模块。2.3 企业即时通信系统的功能描述接下来先对每个系统功能进行简单的描述,通过这个步骤先确定到底要实现什么功能,每个功能点要完成什么任务,这可以为后续的编码实现提供一个指导。各系统功能的详细描述如下所示。1) 登陆u 登陆设置设置连接服务器所需的参数。参数有服务器地址、服务器监听的端口号。u 登陆图用例图将用户名和密码发送至服务器进行验证,根据服务器发回的验证结果作出不同反应。如果验证成功则显示主界面,如果验证失败则提示用户验证失败。2) 主界面u 组织结构将服务器返回的组织结构信息只是给用户,用户可以双击打开与公司员工呃聊天窗口。u 群组列表将

14、服务器返回的群组列表展示给用户,用户双击任一群组节点可以打开群组回话框,此处还提供其它群组操作,包括创建群组、查看群组信息、解散群组、退出群组、刷新群组列表。u 公告列表将服务器返回的公司公告展示给用户,用户双击任一公告可以打开对于公告的评论页面,此处还提供公告的其它操作,如发布公告、删除公告。3) 点对点聊天u 发送信息将消息发送给对方,用户可以设置消息的字体、大小、颜色。u 传输文件客户端之间可以相互传输文件。一个客户端点击发送文件按钮选择要发送的文件,对方同意接收后开始传输文件。4) 群组会议u 创建群组员工可以根据需要创建群组,并同时邀请其他员工加入群组。u 邀请员工加入群组群组内成员

15、可以邀请其他员工加入已有群组。u 将员工移除群组群组创建者即群主可以将任一群组成员移除群组。u 群组聊天群组成员可以发送群组消息,群组内每一个成员都会收到消息,用户可以设置消息的字体、大小、颜色。u 上传共享文件群组成员可以将一些重要文件发布在群共享里面供其他群组成员下载。u 下载共享文件群组成员可以讲群组内的共享文件下载到本地。5) 邮件功能u 发送邮件员工可以使用公司内部邮箱向其它员工发送邮件。u 邮件即时提醒但有新邮件到达时系统会即时提示用户进行阅读。6) 组织结构查看员工可以查看公司的部门组成以及每个部门的人员配置。7) 日常公告管理u 发布公告公司有重要通知时,可以在公告发布页面发布

16、公司公告,公司员工会及时收到公司公告。u 删除公告公司用户可以将过期的、不需要的公告删除。u 查看公告评论员工双击任一公司公告,可以打开相关公告的评论页面,可以查看其它员工对次公告发表的评论。u 评论公告员工可以对公司发布的公告自由的进行评论,员工的评论可以实时的被其它员工获取。第3章 第三章 通信模块3.1 企业即时通信系统的通信协议本模块在整个系统设计中是非常关键的一个模块,它处于最底层,不涉及任何数据包传输,也不涉及任何业务逻辑处理,但它的实现的好坏直接决定了上层的数据包传输模块以及业务处理模块的成功与否。3.1.1 数据收发方式的设计和数据包结构的定义3.1.1.1 数据收发方式的设计

17、在企业及时通信系统中,所有功能的实现都必须依赖客户端与服务端以及客户端与客户端的数据交换。由于客户端和服务端传输的数据格式各种各样,为了在收到数据后能够辨别对方要干什么,就需要规定一个客户端和服务端同时遵守的数据传输格式,即协议,客户端和服务端传输数据必须按照既定的协议传输,否则视为数据错误。 按照一般的惯例,要将交换的数据封装成数据包的形式进行传输。客户端可以向服务器以及在线客户端发送数据包,而服务端则可以向所有在线客户端发送数据包。所有操作都以“请求应答”的模式来进行。客户端与服务端的数据收发方式为客户端向服务端发送请求包,服务端对请求进行处理(比如查询数据库获取信息等),然后将处理结果作

18、为应答包返回给客户端。过程如图所示。客户端与客户端的的数据收发方式为客户端向其它客户端发送请求包,其它客户端收到请求包后获取用户的响应,然后将用户的响应作为应答包返回给请求包发送方。过程如图所示。3.1.1.2 通信协议中数据包结构的定义由于客户端之间、客户端与服务端之间传输的数据是各种各样的,所以必须将种类繁多的数据尽可能的封装到相同或者相似的结构中,否则在编码实现时将会带来极大的麻烦和极繁琐的工作。同时由于每次数据传输的数据长度不同,所以又要求定义的协议有很强的扩展型,能够满足各种类型的数据传输。图.客户端与服务端请求应答顺序图图客户端与客户端请求应答顺序图综上所述,设计出了这样的协议格式

19、,将数据包分为包头和包体两个部分,包头中包含了操作标示以及跟随的参数个数,包体中包含了所有所需的参数,包体中的参数个数与包头中指明的参数个数相同。数据包结构如图所示。这样的设计有以下两点好处:1) 在收到数据包后,首先可以根据包头中的操作标示识别到底要进行何种数据交换,然后可以根据包头中指明的参数个数从包体中取出操作所附带的参数。这样就将种类繁多的操作以及数据封装到了一个相同的结构中。2) 对于不同的操作,传输的参数个数不同,这时只需设置包头中的操作标示以及参数个数,然后将所有传输填装到包体中。这样就很好的支持了不同操作对数据长度以及参数个数的要求,体现了很好的扩展性。图 通信协议数据包结构示

20、意图3.1.2 通讯协议数据包在实现过程中的定义3.1.2.1 相关技术讲解可扩展标记语言 ( , ) 【1】,用来标记文件以使文件能够具有结构性的一种标记语言,可以用来定义数据类型、标记数据等,它是允许用户定义自己的标记语言的一种源语言。由于的各种优点,他在各种应用程序中读写数据都非常,使很快成为唯一的用来数据交换的公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持,那就意味着程序可以更容易的与 以及其他平台下产生的信息结合,然后可以很容易加载数据到程序中并分析他,并以格式输出结果。正是由于的这些优点以及考虑到协议的格式,所以选择了以下方式来在编码中实现协议。数据包

21、在网络上以符合协议格式的串来传输。3.1.2.2 数据包结构的定义如图 所示,数据包的包头非常重要,其中它的操作标示标示了此数据包是做什么用的,而包头中的参数个数直接影响对包体的解析。能否正确解析数据包,将数据包转化为有用的信息首先就取决于对包头的正确解析。如图 所示,数据包的包体也是非常重要的一部分,它包含了操作所需的所有参数,在解析包头得到操作标识后,对包体的解析直接决定了后续操作是否能够正常进行。由上所述对数据包的正确解析是客户端与客户端、客户端与服务端之间正确交流的前提。结合定好的协议在代码中如下实现传输协议。一个完整的、正确的、可被客户端和服务端识别的数据包应该是符合以下格式的串:&

22、lt;>< "" "" "参数" "参数"()"参数"><>其中属性对应于数据包包头中的操作标识,各操作标识以及对应的操作描述如表 所示。属性对应于数据包包头中的参数个数,用于解析后续包体中的各个参数,值可以为。至()对应于数据包的包体,里面依次为操作所需的个参数。由于数据交换中数据种类繁多,在本论文无法将全部定义一一列出,这里仅通过登陆验证的协议数据包定义来阐释数据包具体的定义方式,其他操作相关的数据包包体定义与之类似。客户端连接到服务端后将用户名密码发送至服务端

23、进行验证,而服务端则将验证结果返回给客户端。下面介绍在代码中如何实现定义请求包和应答包。u 登录验证请求包的定义: <>< "" 操作标识,表示要进行验证"" 参数个数,表示两个参数"账号" 参数一"密码">参数二<>其中"" ""对应于与包头,的属性为标识要进行的操作为验证密码,而 的属性为则标识后面跟有两个参数。"账号" "密码"对应于包体,分别为第一个参数和第二个参数u 登录验证应答包的定义:&

24、lt;>< "" 操作标识,表示返回验证结果"" 参数个数,表示有一个参数"结果" > 参数一<>其中"" ""对应于包头,的属性为标识返回的是验证结果,而 的属性为则标识后面跟有一个参数。"结果"对应于包体,标识验证结果,如果是标识验证成功,如果是则标识验证失败。表. 操作标识以及对应的描述标识名传输方向描述客服端到服务端客户端向服务端发起认证,参数包括账号、密码服务端到客户端服务端向客户端返回认证结果,参数包括认证结果,代表失败,代表成功客服

25、端到客户端客户端向服务端发送本机信息,参数包括监听的端口号服务端到客户端服务端向客户端传输部门信息,参数包括部门编号以及部门名称标识名传输方向描述客服端到客户端客户端向其它客户端发送聊天消息,参数包括用户以及消息内容客服端到客户端客户端向其它客户端发送聊天所用的字体信息,参数包括字体、字号、颜色客服端到客户端客户端向其它客户端发起文件传输请求,参数包括文件名、文件大小、传输文件所用的端口号客服端到服务端客户端向服务端发起请求,获取自己的群组列表客服端到服务端客户端向服务端发起请求,获取群组成员,参数包括群组客服端到服务端客户端向服务器发起创建群组请求,参数包括群组名称、群组描述、所邀请的群组成

26、员等客服端到服务端客户端发送的群组消息,有服务端进行转发,参数包括发送者、字体、字号、字体大小、消息内容客服端到服务端客户端向服务器发送邀请其他员工加入群组请求,参数包括群组、以及邀请的人员列表客服端到服务端群组创建者向服务端发送移除群组成员请求,参数包括群组、要移除的群组成员客服端到服务端群组成员向服务端发送退出群组请求,参数包括要退出的群组客服端到服务端服务端到客户端群组创建者向服务端发送解散群组请求,服务端向群组成员发送群组解散通知,参数包括群组标识名传输方向描述客服端到服务端服务端到客户端群组创建者向服务端发送群组说明更新通知,服务端向群组成员发送群组说明更新通知,参数包括群组、群组说

27、明客服端到服务端群组成员向服务端发送上传共享文件请求,参数包括群组、文件名、文件大小、传输文件所用的端口号客服端到服务端群组成员向服务端发送下载共享文件请求,参数包括群组、文件名、传输文件所用的端口号客服端到服务端群组成员向服务端发送获取群共享文件列表请求,参数包括群组客服端到服务端创建者通知服务端删除群共享文件,参数包括群、要删除的文件名客服端到服务端服务端到客户端客户端向服务端传输发布的评论,服务端向客户端发送员工对某一公告的评论。参数包括公告、发布者、评论内容客服端到服务端客户端向服务端发送发布公告请求,参数包括公告内容客服端到服务端客户端向服务端发送获取公告请求客服端到服务端客户端向服

28、务端发送删除公告请求,参数包括要删除的公告客服端到服务端客户端向服务端发送获取公告评论请求,参数包括要获取评论的公告服务端到客户端服务端向客户端发送员工基本信息,参数包括员工、昵称、性别、在线状态等服务端到客户端服务端通知在线用户员工上线信息,包括上线员工的、通信所需的端口号服务端到客户端服务端通知在线用户员工下线信息标识名传输方向描述服务端到客户端服务端通知用户被移出群组信息,包括群组服务端到客户端服务端向客户端发送公司公告,参数包括发布者、时间、公告内容服务端到客户端服务端向群组成员发送群共享文件列表,参数包括群组、文件名、文件大小3.1.3 本节小结本节主要介绍了本系统客户端与客户端之间

29、、客户端与服务端之间的数据传输办法,详细设计出了数据在网络上传输的通信协议。并详细讲解的通信协议数据包结构在实现中的定义。3.2 数据包传输模块的设计与实现本模块在整个系统设计中是非常重要的一个模块,在企业即时通信系统中,所有功能的实现都必须依赖客户端与服务端以及客户端与客户端的数据交换。而能否可靠、快速的进行数据交换直接决定了其它后续业务处理模块的正常运行,而本模块就承担了数据包交换这个关键任务,它确保其它模块要处理的数据是一个个完整的数据包,此模块成功实现后,其它模块将完全从繁琐的数据包交换中解放出来,将可以完全关注于与用户的交互以及其它业务的实现。3.2.1 套接字的模型选择和多线程的运

30、用3.2.1.1 套接字模型选择在利用进行编程时,有以下几个概念需要了解,同步、异步、阻塞、非阻塞【2】 。同步、异步属于通信模式,而阻塞、非阻塞属于套接字模式。Ø 同步方式通信的同步是指客户端在发送请求后,需要在得到服务端的回应后才可以发送下次请求。Ø 异步方式与同步方式相反,在异步方式下,客户端再发送请求后,不必等待服务端做出回应即可以发送下次请求。Ø 阻塞阻塞套接字是指在调用某一套接字的网络调用时,如读取数据、写入数据等,所调用的函数只有在得到结果后才会返回,在得到调用结果前,该调用所在的线程会挂起,该套接字会阻塞在该网络调用上,直到有数据到来或操作完成。&

31、#216; 非阻塞同样,与阻塞套接字不同的是,非阻塞套接字在进行某一网络调用时,不论调用能否立刻完成,它都会直接返回,因此对非阻塞套接字的网络调用不会将线程挂起。在本系统开发中,如果采用一般的同步阻塞套接字,当在发起一个不能立刻完成的网络调用时,由于阻塞套接字的特性,会将发起套接字网络调用的线程挂起,直接的结果就是导致主线程挂起,最后导致这个应用程序阻塞,界面无响应。所以本系统开发中采用了异步非阻塞套接字。而在用进行网络编程【3】 自学手册,机械工业出版社,2007;时,由于 对阻塞和非阻塞套接字机制的封装,其中、中的、等方法对套接字的非阻塞操作提供了很好地支持,因此我们直接采用命名空间命名空

32、间下的、等进行代码编写。3.2.1.2 多线程技术的运用正如人可以同时思考、听歌、走路,汽车可以同时转弯、播放音乐、加速一样,计算机也可以同时进行许多工作,这就是多线程的思想。多线程的好处是能使多个线程在应用程序中同时运行,这样就可以使多个工作并发的进行,大大的提高了程序处理数据的速度。例如在进行数据交换时,如果数据交换比较耗时,那就可以开启一个线程在后台专门负责数据交换,而这时候主线程还可以同时响应用户的其它操作,这样也大大的提高了响应速度。综上所述,本系统在开发时充分的利用了多线程的诸多优点,对各种耗时操作都放在了单独的线程中进行处理。例如在进行文件传输时,由于文件传输是个非常耗时的工作,

33、于是专门开启一个线程进行文件传输。这样即可以使用户在文件传输时进行其它操作,例如聊天、发布公告、评论公告等,又可以避免在文件传输时将主线程阻塞导致界面无响应,程序崩溃。在下进行多线程开发【4】时,在的基础类库的命名空间中,提供了大量的类和接口支持多线程程序设计所需要实现的功能,包括线程的创建、停止、同步等。在本系统开发中就用命名空间中的类进行多线程程序开发。3.2.2 数据包传输模块的设计3.2.2.1 数据包传输面临的一些问题在使用协议【5】的套接字编程的非阻塞操作中,当你发起一个调用时,调用函数会直接返回,当异步调用完成时,会通知你设好的回调函数进行处理。当你的回调函数从缓冲区读取数据进行

34、处理时就会遇到一个问题,如果对方多次数据包发送时间非常接近,在你读取数据包时数据缓冲区中就会存在多个数据包,而由于不同的数据包长度不一样,当你读取时你就无法准确的读取一个数据包,你有可能读取多个数据包或者读取到不完整的数据包,这时候就需要某种机制来确保能够将缓冲区中的数据解析成一条条完整的协议。3.2.2.2 数据包缓冲区的设计与实现为了能够正确的进行通信,并且解决上一节提到的问题,将数据包缓冲区设计如下,在系统中创建一个数据缓冲区存储将要发送的数据或者接收到的数据,在缓冲区中所以数据以字节流的形式存储。数据缓冲区的大小为,其中前字节存储数据,第字节存储缓冲区中原有数据长度。每次收到数据后调用

35、的方法从数据包缓冲区中解析得到协议数组,并将剩余的数据保存在数据包缓冲区中。在的中用到了一些对于正则表达式【6】 xxdeerchaox/tutorials/regex/regex.htm的支持,其中首先定义了一个符合通信协议格式的匹配规则,用来对输入的字符串进行匹配,存储匹配得到的协议列表,由于可能读取到多个数据包,所以也可能匹配得到多条协议。匹配结束后将中的剩余部分移到最前部,并将匹配得到的协议列表返回。3.2.3 数据包传输模块的实现3.2.3.1 客户端与服务端的数据包传输对于客户端与服务端的通信,客户端启动后先调用方法做一些初始化,然后在方法中投送一个异步接受操作(),异步操作直接返

36、回,在异步接受操作完成后,会调用方法,在中,先调用的方法对数据包缓冲区中的数据进行解析。解析完毕后继续投送下一次异步接受操作(),然后再将解析得到的每个数据包委托给主线程进行处理,处理过程在主线程的方法中。图描述了客户端与服务端通信模块的工作流程。初始化尝试连接服务器获取错误信息,向业务逻辑层反馈开始监听网络事件()调用读响应事件()将消息重新封装,交给业务逻辑层进行处理。()调用连接断开响应事件连接失败有数据发来与服务器断开连接图 客户端与服务端通信模块的工作流程其中读响应事件的具体工作流程则需要更详细的说明,下面结合图进行具体的讲解。在读响应事件中,在通过的得到一个个完整的数据包后,会根据

37、包头中的信息,将包体中的信息进行预处理,然后将预处理得到的信息(要进行的操作、参数)重新封装以便于交给业务逻辑层进行处理。进入读响应事件读取缓冲区中的数据数据是否完整否对数据重新封装()是调用数据处理函数图 读响应事件工作流程3.2.3.2 客户端与客户端的数据包传输对于客户端于客户端的通信,客户端于客户端的通信采用协议,客户端启动后,首先调用方法,在方法中同样先投送一个异步接受操作(),在异步接受操作完成后,会调用方法,由于在使用通信的套接字中不会出现多个数据包叠加在一起的情况,所以在对收到的数据包进行处理时,直接开启新线程进行处理,并投送下一次异步接受操作。线程对数据包的处理工程在方法中。

38、图描述了客户端与客户端通信模块的工作流程。初始化监听网络事件()调用读响应事件()有数据到来将消息重新封装,交给业务逻辑层处理。()调用客户端退出响应事件客户端退出图 客户端与客户端通信模块的工作流程3.2.4 本节小结本节详细讲解了数据包传输模块的设计与编码实现,本模块的实现为其它模块提供了可靠、快捷的数据包传输保障。第4章 第四章 业务逻辑模块4.1 引言本章节主要讲解系统功能的详细实现,本章节的内容是整个系统开发中编码最为繁琐、耗时最长的一部分。评价一个即时聊天系统是否成功,最终还是要看用户的体验、评价,而决定用户对一个软件评价好坏的往往取决于软件提供的功能以及功能实现的好坏,所以本章节

39、任务完成的好坏最终决定了本系统的成败。接下来结合系统流程图【7】【8】 美Jones BL,21天学通C#,人民邮电出版社,2002.3;【9】 金华、华进,C#网络编程技术教程,2006;图简单介绍一下系统的工作流程,用户登录系统后可以选择不同的操作,系统根据用户的不同选择调用不同的子模块。图 . 企业即时通信系统客户端操作流程图接下来将用一章节的内容详细讲解系统功能一步步的实现,依次为登陆模块、主界面、点对点通信、群组会议、组织结构查看、日常公告管理、工作邮件。4.2 登陆登陆模块包含两个功能,登陆设置以及登陆认证。登陆模块的工作流程如 图所示。系统根据用户不同的选择调用不同的模块进行处理

40、。4.2.1 登陆设置4.2.1.1 功能描述客户端要连接服务端进行登录首先就需要知道服务端的地址设置以及服务图 登陆模块流程图端监听的端口号,而这个模块就是对这些参数进行设置。参数有服务器地址、服务器监听的端口号。4.2.1.2 界面设计界面设计如图所示。图 登陆设置界面设计4.2.1.3 业务处理流程启动时先从配置文件中读取保存的服务器配置。如要更改服务器配置,在地址栏输入服务器地址,端口栏输入服务器监听的端口号,点击确定后将新的服务器配置写入配置文件中。4.2.2 登陆4.2.2.1 功能描述此模块最主要的功能就是将用户名和密码发送至服务器进行验证,根据服务器发回的验证结果作出不同反应。

41、如果验证成功则显示主界面,如果验证失败则提示用户验证失败。为了方便用户操作,提高用户体验,此模块加入了其它一些功能,例如记住密码以及自动登录功能。用户使用记住密码功能后,系统会将用户账号和用户密码进行保存,每次系统启动,系统会将用户上次使用的账号和密码自动填充,这样就免去了每次登录输入密码的烦恼。用户使用自动登录功能后,系统启动后会自动使用用户上次登录的账号连接服务器进行验证。4.2.2.2 界面设计界面设计如图所示。图 登陆功能界面设计4.2.2.3 业务处理流程系统启动后先从配置文件中读取用户配置,然后根据用户的不同配置做不同的初始化工作,例如用户选择了记住密码功能,那么系统会从配置文件中

42、读取用户上次的账号信息并将信息填充在界面上。用户点击登陆后先检查账号和密码是否已经输入。如果已经输入则从配置文件读取服务器配置,开始连接服务器,连接服务器成功后将用户名和密码发送过去就行验证,数据发送格式为: <>< "" "" "账号" "密码"><>。服务器返回验证结果后,工具验证是否成功做不同处理,服务器返回的验证结果的数据格式为:<>< "" "" "结果" ><>。如果成功则

43、显示主界面,失败则提示用户验证失败。登陆功能序列图如图所示。图登陆序列图4.3 主界面4.3.1 组织结构4.3.1.1 功能描述此功能模块最主要的工作就是将服务器返回的组织结构信息只是给用户,它能够使用户方便快捷的了解公司的组织结构,公司员工通过此模块不仅可以清楚地了解公司有哪些部门,而且还可以知道每个部门的人员配置。另外此功能模块还附加一些其他的便捷功能,比如用户双击列表中的任一员工就可以打开与此公司员工的聊天窗口,双击列表中自己的节点就可以打开个人信息设置页面,员工根据其他员工的头像就可以判断其他员工是否在线。4.3.1.2 界面设计界面设计如图所示。图组织结构4.3.1.3 业务处理流

44、程1) 展示组织结构信息从服务器收到组织信息后根据不同信息向组织结构树形控件中添加节点,如果返回部门信息则直接添加节点,如果返回员工信息,则根据员工所属部门找到部门节点后添加节点。服务器返回的组织信息结构数据格式如下:l 部门信息:<>< "" "" "部门" "部门名称"><>。l 员工信息:<>< "" "" "账号" "昵称" "性别" "年龄&q

45、uot; "状态" "部门"><>。2) 打开与员工的回话窗口用户双击节点后,获取用户双击的节点信息,判断双击的节点是员工还是部门。如果使员工则先在中的表中查询是否已经打开聊天对话框,如果未打开则根据节点信息创建新的聊天对话框显示,并将对话框添加到中的表中。4.3.2 群组列表4.3.2.1 功能描述将服务器返回的群组列表展示给用户,用户双击任一群组节点可以打开群组回话框,此处还提供其它群组操作,包括创建群组、查看群组信息、解散群组、退出群组、刷新群组列表。4.3.2.2 界面设计界面设计如图所示。图群组列表4.3.2.3 业务处理流程

46、1) 展示群组列表服务器返回群组列表信息后,将群组信息添加到群组列表。服务器返回的群组信息数据格式如下:<>< "" "" "群" "群名称" "群组说明" "群组创建"><>。2) 打开群组回话框用户双击群组列表后,获取双击的群组节点信息,在查找群组会话框是否已经在中的表中,如果不在则根据群组信息创建新的群组会话框显示,并将群组会话框添加到中的表中。3) 创建群组用户点击创建按钮后,弹出创建群组对话框,创建群组的处理过程由创建群组对话框处

47、理。4) 其它根据用户是否为所点击的群组的创建者弹出不同菜单,然后根据用户的选择向服务器发送不同信息,如退出群组或者解散群组。退出群组或解散群组的数据格式如下:l 退出群组:<>< "" "" "群"" ><>。l 解散群组:<>< "" "" "群"" ><>。4.3.3 公告列表4.3.3.1 功能描述将服务器返回的公司公告展示给用户,用户双击任一公告可以打开对于公告的评论页面,此

48、处还提供公告的其它操作,如发布公告、删除公告。4.3.3.2 界面设计界面设计如图 所示。4.3.3.3 业务处理流程1) 展示公司公告得到服务器返回的公告信息是,向公告列表添加节点。服务器返回公告的数据格式如下:<>< "" "" "公告" "发布者" "时间" "公告内容"><>。2) 打开公告评论页面用户双击任一公告后,获取双击的公告的信息,查询对应的公告评论框是否在中的表中,如果不在则根据公告信息创建对应的公告评论框显示,并将公告评

49、论框显示添加到中的表中。有关公告评论的操作在公告评论对话框中处理。图公告列表3) 发布公告弹出发布公告对话框,发布公告处理过程由发布公告对话框负责。4) 删除公告根据用户的选择将要删除的公告信息发送至服务器。删除公告的数据格式如下:<>< "" "" "公告" ><>。4.4 点对点通信点对点通信模块包含两个功能,发送信息以及传输文件。用户可以在聊天框输入信息向其它员工发送信息,也可以选择本地文件向对方发送文件。系统则根据用户的不同选择调用不同的模块。点对点通信模块的活动图如图所示。4.4.1 发送

50、信息4.4.1.1 功能描述用户通过此功能模块可以于公司内的其它任一员工进行交流,目前只支持文字交流,视频聊天以及语言聊天功能以后再添加。用户使用此功能时首先要在组织结构列表中找到要聊天的员工,然后双击员工节点就可以打开聊天窗口,在聊天框中输入聊天信息点击发送按钮就可以将消息发送给对方。图点对点通信活动图另外为了给用户提供较好的体验,本功能模块添加了其它一些功能。比如用户可以设置聊天使用的文字的字体、大小、颜色。对于聊天信息的展示,系统会将消息发送者的昵称、消息发送时间全部展示给用户。4.4.1.2 界面设计界面设计如图所示。4.4.1.3 业务处理流程用户点击发送按钮后,先判断消息发送框内容

51、是否为空,如果不为空,则将消息内容与字体封装,发送到对方客户端。消息数据格式如下:l 字体数据格式:<>< "" "" "发送者" "字体" "字号" "颜色"><>。l 消息内容数据格式:<>< "" "" "发送者" "消息内容"><>。序列图如图所示。图发送消息界面图发送消息序列图4.4.2 传输文件4.4.2.1 功能

52、描述在打开了聊天窗口的前提下,用户可以将本地计算机的一些资料传输给对方。使用时发送方点击发送文件按钮选择要发送的文件,然后客户端会向另一个客户端发送文件传输请求,在对方同意接收后开始传输文件。4.4.2.2 界面设计界面设计如图所示。图传输文件界面4.4.2.3 业务处理流程用户选择要发送的文件,本地客户端随机监听一端口,将要发送的文件信息以及监听的端口号封装成消息发送至对方客户端,对方同意接受文件后,连接本地给定端口,两客户端连接成功后开始传输文件。序列图如图.所示。4.5 群组会议群组会议模块包含三功能,发送信息、文件共享、群成员管理。发送信息功能,用户可以在聊天框输入信息向其它群组成员发

53、送信息。文件共享功能用户也可以选择本地文件发送到群共享也可以从群共享下载文件。群成员管理功能,群创建者可以邀请和移除群成员,而群成员只可以邀请其他员工加入群组。系统则根据用户作出的不同选择调用不同的模块进行处理。群组会议模块的活动图如图所示。4.5.1 创建群组4.5.1.1 功能描述员工可以根据需要创建群组,并同时邀请其他员工加入群组。图文件传输序列图图群组会议活动图4.5.1.2 界面设计界面设计如图.所示。图创建群组界面4.5.1.3 业务处理流程用户输入群组名称、群组说明,并选择邀请的员工,点击确定按钮。系统判断用户输入信息是否完整,如果所需信息输入完整则将创建群组信息发送至服务器,创

54、建群组成功。创建群组信息数据传输格式如下:<>< "" "" "群名称" "群组说明" "创建者" "被邀人员" "被邀人员" "被邀人员" ><>。序列图如图所示。4.5.2 邀请员工加入群组4.5.2.1 功能描述群组内成员可以邀请其他员工加入已有群组。4.5.2.2 界面设计界面设计如图.所示。4.5.2.3 业务处理流程群组成员在邀请员工加入群组页面选择要邀请的联系人,点击确定。系统根据群组信

55、息、邀请的联系人列表生成消息发送至服务器。图创建群组序列图图邀请员工加入群组邀请员工加入群组消息传输格式如下:<>< "" "" "群" "被邀人员" "被邀人员" "被邀人员" ><>。4.5.3 将员工移除群组4.5.3.1 功能描述群组创建者即群主可以将任一群组成员移除群组。4.5.3.2 业务处理流程群主选择任一群组成员点击移除按钮,系统将群组信息以及要移除的成员信息封装成消息,发送至服务器。移除群组成员消息传输格式如下:<&

56、gt;< "" "" "群" "被员工" ><>。4.5.4 群组聊天4.5.4.1 功能描述群组成员可以发送群组消息,群组内每一个成员都会收到消息,用户可以设置消息的字体、大小、颜色。4.5.4.2 界面设计界面设计如图所示。4.5.4.3 业务处理流程用户在消息框输入要发送的消息,单击发送按钮。系统判断消息框内容是否为空,如果不为空,将本地群组信息、用户信息、字体、消息内容封装成消息,发送至服务端。群组聊天消息传输格式如下:<>< "" "

57、" "群" "发送者" "内容" "字体" "大小" "风格" "颜色"><>。序列图如图所示。图群组聊天界面图群组聊天序列图4.5.5 上传共享文件4.5.5.1 功能描述平时如果员工之间要共享一些文件、资料文档时,一般情况下员工会拿盘、移动硬盘等进行拷贝或者用进行传输,但是在一些不允许员工使用盘、等聊天工具的公司,员工之间的文件共享将变得十分麻烦。正是由于这点,企业即时通信工具加入了群文件共享的功能。群组成员可以将一些重要文

58、件发布在群共享里面,其他群组成员可以方便的进行下载,这样既方便了员工,又保证了安全性(共享文件只可以让群组成员进行下载)。4.5.5.2 界面设计界面设计如图所示。图群组文件共享界面4.5.5.3 业务处理流程用户点击上传文件选择要上传的文件,系统随机监听端口,将群组信息、上传的文件信息、监听的端口号封装成消息发送至服务端。服务端收到请求后连接客户端,连接成功后开始传输文件。上传文件消息传输格式如下:<>< "" "" "群" "文件名" "文件大小" "监听端口号&

59、quot; ><>。序列图如图所示。图上传群共享文件4.5.6 下载共享文件4.5.6.1 功能描述平时如果员工之间要共享一些文件、资料文档时,一般情况下员工会拿盘、移动硬盘等进行拷贝或者用进行传输,但是在一些不允许员工使用盘、等聊天工具的公司,员工之间的文件共享将变得十分麻烦。正是由于这点,企业即时通信工具加入了群文件共享的功能。群组成员可以方便的进行下载其它员工共享的文件,这样既方便了员工,又保证了安全性(共享文件只可以让群组成员进行下载)。4.5.6.2 界面设计界面设计如图所示。图群组文件共享界面4.5.6.3 业务处理流程用户选择要下载的文件点击下载文件选择要保存的位置,系统随机监听端口,将群组信息、下载的文件信息、监听的端口号封装成消息发送至服务端。服务端收到请求后连接客户端,连接成功后开始传输文件。下载文件消息传输格式如下:<>< "" "" "群组号" "群共享文件名" "监听端号"><>。序列图如图所示。4.6 日常公告管理日常公告管理包括四个功能,发

温馨提示

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

评论

0/150

提交评论