




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. _一一兰主塑 一一一一一一一一一一 a p p l i c a t i o n o f o 呵e c t - o r i e n t e d t e c h n o l o g y i n co mmu n i c a t i o n a n d co n t r o l ab s t r ac t 。 均 e c t - o r i e n t e d t e c h n o l o g y , w h i c h m a k e s i t p o s s ib l e t o r e u s e s o f t w a r e b y t h e i n t r o d u c t i o n o f c l a s s , o b j e c t a n d o t h e r c o n c e p t s , i s a n i m p o rt a n t p r o g r e s s in s o f tw a r e d e v e l o p m e n t . n o t o n ly i t r e d u c e s t h e d e v e l o p i n g p e r i o d o f t h e s o f tw a r e a n d i m p r o v e s t h e d e v e l o p m e n t e f fi c i e n c y , b u t a l s o it p r o v i d e s l a r g e - s c a l e a n d h i g h - e f f i c i e n c y a p p l i c a t i o n p r o g r a m s w i t h a p p l i c a b l e p r o g r a m m i n g id e a s a n d m e t h o d s . t h e t e c h n o l o g y g iv e s a n m a j o r i m p e t u s t o t h e d e v e l o p m e n t o f c o m p u t e r s o f tw a r e . o b j e c t - o r ie n t e d t e c h n o l o g y i s a p p l i e d i n m a n y fi e l d s . i n t h i s t h e s i s , w e fi r s t i n t r o d u c e t h e e s s e n t i a l s a n d c o r e c o n c e p t s o f o b j e c t - o r ie n t e d t e c h n o l o g y . t h e n w e i n t r o d u c e a p p l ic a t i o n s b a s e d o n t h e i d e a a n d t e c h n o l o g y : a s o f t w a r e f o r n e t w o r k c o m m u n i c a t io n a n d a d r iv e r f o r g e n e c h i p a r r a y s y s t e m , t h e f o r m e r i s a fi l e - t r a n s f e r s y s t e m u s e d i n a n o r g a n iz a t i o n o r c o m p a n y a n d i t t r a n s f e r e - m a i l s a n d b i n a ry fi l e s i n s i d e a c o m p a n y o r t h r o u g h i n t e r n e t w it h e x c e l l e n t p e r f o r m a n c e a n d w it h o u t e r r o r s . t h e l a tt e r 招u s e d t o d r i v e t h e g e n e c h i p a r r a y s y s t e m. k e y w o r d : o b j e c t - o r i e n t e d . n e t w o r k c o m m u n ic a t i o n , g e n e c h i p a r r a y s y s t e m. s o c k e t . mu l t i t h r e a d 弓i 日言 面向对象技术 面向对象技术是目 前流行的系统设计开发技术, 它包括面向对象分析和面向对象程序设 计。 面向 对象程序设计技术的 提出, 主要是为了 解决传统程序设计方李 去 一 一结构化程序设计 所不能解决的代码重用问题。 结构化程序设计从系统的功能入手, 按照工程的标准和严格的规范将系统分解为若千功 能模块, 系统是实现模块功能的函数和过程的 集合。 由于用户的需求和软、 硬件技术的 不断 发展变化, 按照功能 划分设计的 系统 模块必然是易 变的 和 不稳定的. 这样开发出 来的 模块可 重用性不高。 面向 对象程序设计从所处理的数据入手, 以 数据为中心而不是以 服务 ( 功能) 为中心来 描述系统。它把编程问 题视为一个数据集合, 数据相对于功能而言, 具有更强的稳定性。 面向 对象程序设 计同结构化程序设计相比 最大的区别就在于: 前者首先关心的 是所要处 理的数据,而后者首先关心的是功能。 面向 对象程序设计是一种围绕真实世界的 概念来组织模型的 程序设计方法, 它采用对象 来描述问 题空间的实体。 关于对象这一概念,目 前还没有统一的定义。 一般的认为, 对象是 包含现实世界物体特征的 抽象实体, 它反映了系统为之保存信息 和 ( 或) 与它交互的能力。 它是一些属性及服务的一个封装体,在程序设计领域,可以用 “ 对象= 数据+ 作用于这些数 据上的 操作” 这一公式来表达。 类是具有相同 操作功能和相同的 数据格式( 属性) 的对象的 集合。 类可以 看作抽象数据 类型的具体实现。 抽象数据类型是数据类型抽象的 表示形式。 数据类型是指数据的集合和作 用于其上的操作的 集合, 而抽象数据类型不关心操作实现的细节。 从外部看, 类型的行为可 以 用新定义的操作加以规定。 类为对象集合的抽象, 它规定了这些对象的公共属性和方法: 对象为类的一个实例。 苹果是一个类, 而放在桌上的那个苹果则是一个对象。 对象和类的关 系相当于一般的程序设计语言中变量和变量类型的关系。 消息是向某对象请求服务的一种表达方式。 对象内有方法和数据, 外部的用户或对象对 该对象提出的服务请求, 可以 称为向 该对象发送消息。 合作是指两个对象之间共同承担责任 和分工。 面向 对象的 编程方法有四个具体特征: 抽象、 继承、 封装和多态性。 面向 对象程序设计具有许多 优点。 开发时间短, 效率高, 可靠性高, 所开发的程序更强 壮。 由于 面向对象编程的可重用性, 可以 在应用程序中大量采用成熟的类库, 从而缩短了开 发时间。 应用程序更易于 维护、 更新和升级。 继承和封装使得应用程序的修改带来的影响更 加局部化。 本文意图及内容 目 前, 面向对象程序设计在很多方面都得到了广泛的应用。 本文将首先探讨面向对象技 术的基本思想及其核心概念,然后重点讨论其在网 络通讯及控制中的应用。 本文结构为: 在第一章中 详细介绍了 面向 对象技术的基本思想和核心概念, 及其对软件 发展的意义; 在第二章中将面向 对象技术应用于网络通讯软件的设计实现当中, 开发了一种 用于企业及公司内 部的文件传输的系统; 在第三章中 将面向 对象技术应用于控制程序的设计 中, 实现了基因芯片点样机的驱动程序. 本文的创新点在于将面向 对象这一程序设计方法应用在了 实际的软件开发当中, 具体实 现了网 络文件的传输系统和基因芯片点样系统点样机的驱动。 第 一 章w 向 对 象 技 术 本章将详细介绍面向 对象技术的 产生发展及其基本思想与核心概念, 如类、 对象、 继承 等,同时也介绍了面向 对象的程序设计方法。 1 . 1 面向对象 在计算机应用领域中, 硬件技术日 新月异的飞速发展, 与软件开发的步履维艰, 形成了 鲜明的对比。 随着软件运行环境的变更, 用户需求的扩充, 版本的完善, 任何一个软件都不 可能没有错误, 都需要大量的软件维护工作。 如果一个软件的 可维护性很差, 那么这个软件 从它诞生之日 就已 注定了 其灭亡的命运。 早期系统软件由 于可维护性差、 健壮性差、 用户需 求常常得不到满足、软件设计表示方法落后等内在原因, 从6 0 年代中 期开始出 现了软件危 机。 尽管4 0 余年来, 人们在软件开发方法上进行了大量的 研究和实践, 于7 0 年代开始推出 并大量使用了以“ 瀑布式生命周期” 为基础的结构化方法, 缓解了 软件危机, 但在日 益增长 的软 件需求下, 仍感力 不从 心. 因 为在 传统的 软 件设计 风范中 ,自 顶向 下( t o p - d o w n ) 一 直 被认为是系统分析设计的基本要点,然而要精确的定义出 所要的 “ 顶” ( 实际上是抽象出 “ 顶; ) 和要下到的“ 底” , 却是很困难的: 同时,自 顶向 下的先抽象 ( 出“ 顶” ) 再细分 ( 到 “ 底” ) , 这一上一下与客观现实自 然就拉开了 距离, 产生了 差异。 正是在这样的背景下, 以 “ 瀑布式生命周期” 为基础的结构化方法, 才会把客观现实按人类的工程要求, 硬性的割裂 为线性的5 个生 命周期阶段。 但大量 实践 证明, 在某些条 件下,自 底向 上( b o tt o n - u p ) 反 而 更有效。 所以, 又出 现了 基于结构化方法的多次反复上下的方案 ( 如原型法) , 但都未能 取 得令人满意的结果, 其重要原因之一, 就是用上述方法开发的软件, 其软件中的数据与操作 过程始终是分离的。近 1 0年来,采用类和对象来封装数据与操作的面向对象 ( o b j e c t - o r i e n te d ) 开发方法,引 起了 人 们的 兴 趣和重视, 并 在近年来获 得迅猛发展。 面向 对象方法与技术起源于面向 对象的编程语言 ( o o p l ) e 8 0 年代大批o o p l的出 现 和不断提高标志着0 0技术开 始走向 繁荣和实用。 8 0 年代后期到9 0 年代相继出 现了一大批 关于 面向 对象的分 析与设 计的论 文和专著, 如 文献 3 4 1 , 3 5 1 。 进入9 0 年 代以 来, 在学 术界, 面向 对象的方法与技术己 成为最受关注的 研究热点, 越来越多的学术会议和学术期刊把面向 对象列为主要议题之一, 并且每年都有许多关于面向对象的专著出版。 在产业界, 越来越多 的公司 从传统的软件开发技术转向 面向 对象技术, 并以此作为提高公司 形象和产品信誉的标 志。 特别是 在一些发 达国 家, 几乎 所有的 新软件开发, 都 全面或部分 地采 用面向 对象技术 2 1 , 3 1 , 6 l , 7 l 。 这一切都向 人们表明, 9 0 年 代的 面向 对象方 法己 在计算机科学技术领域占 据 了无可争议的主流地位。 _ - 一一一 c c r-i 丝些色一 面向 对象技术有如下基本特征: ( 1 ) 对象是数据和有关操作的封装体, 突破了传统的 将数据与操作分离的模式, 较好 地实现了数据的抽象。 c z ) 面向 对象技术的 继承性体现了 概念分离抽象, 在对象继承结构上, 下层对象继承 上层对象的 特征 ( 属性和操作) ,因而面向 对象技术便于软件的演化和增量式扩充。 ( 3 ) 面向 对象技术用消息将对象动态连接在一起。与传统的模块调用不同, 面向对象 技术采用了灵活的消息传递机制,从而便于在概念上体现并行和分布式结构。 ( 4 ) 面向 对象技术具有信息隐藏性。 对象将其实现细节隐藏在它的内部,因 此无论是 对象功能的完善扩充, 还是对象实现的修改, 影响仅限于该对象内 部, 而不会对外界产生影 响。这就保证了面向 对象软件的可构造性和易维护性。 面向 对象技术与传统的结构化方法有着本质的区别。 传统的结构化方法, 包括结构化系 统分析、 系统设计及程序设计方法, 使软件开发人员从开发软件的立场出发, 为提高软件的 结构化、 模块化及可读性而确立的方法, 是以 系统中的数据及对数据进行处理的过程为研究 中心的。 面向 对象技术使我们分析、 设计和现实系统的 方法同我们认识客观世界的过程尽可 能的一致,是一种以 封装了数据和对数据的操作的对象及不同对象之间的相互关系为中心 的。 面向 对象技术很容易解决软件设计中以上存在的问 题。 1 . 面向 对象的封装性可以 解决软件的健壮性方面存在的问 题封装是将对象的各种独立 的外部特性与内部实现细节分开, 防止由于 程序的相互依赖性而带来的影响。 基本思想是使 系统的 每个部分都 封装或者隐 藏为一个设 计决 策: 各个部分设计 得尽可能 少地与其内 部工作 状态相联系。 封装改变了 传统的数据访问 方式,把数据结构与它的操作封装在一个对象中, 不允许其它类直接访问 它的数据, 从而彻底消除潜在的不一致性, 有效地解决了 健壮性方面 的问题。 同时如果分析和设 计能封装系统的 各个部分, 则需求的更改对整个系统的影响将会 减到最少。 2 . 面向 对象技术的继承性可以 解决软件的 可修改性。 继承指的是能直接获得已 有的性质 和特征而不必重复定义它们。 面向 对象技术的继承性是对人类的认知过程的 一种仿真。 继承 性模仿了 人类的认知过程, 并简化了 对象设计。 面向 对象技术允许子类继承父类的 属性 ( 数 据结构) 和行为 ( 操作、 方法、函 数) , 这使软件的 修改变得容易。 我们只要增设一个子类, 使它具有要修改的 属性和行为。由于这样的 修改不涉及原有代码, 就不存在修改的副作用, 因而从根本上改善了软件的可修改性这一极为重要的问题。 传统的软件开发从系统的 边界出发进行功能设计. 当 边界扩充时整个软件系统的可重用 部分很少, 因 此可扩充性很差。 而用面向 对象技术的继承性只需增加若干与扩充有关的新的 对象类即可。这是面向对象技术对传统软件设计的一大改进。 一一一 m h 些世主一一一一一一一一 也正是由于面向 对象技术对数据结构 ( 属性) 和行为( 操作和方法) 的继承性允许 在没 有冗余的情况下, 各相似子类共享共同的属性和操作, 它可促进各个级别上的 共享。 对面向 对象语言, 使用继承还能实现代码共享。 共享能有效地减少软件设计和软件测试的工作量。 而传统的 软 件开发只能 做到 功能 级共 享, 即 公用子 程序 和公 共子 模块, 如果在其它级别上共 享, 就很容易产生逻辑内 聚和偶然内 聚等极坏的模块内聚方式。 3 . 面向 对象的由 抽象到具体可以 解决软件流程图带来的问 题。 抽象是强调实体的本质、 内 在属性,而忽视一些无关紧要的 属性。 系统开发过程中, 抽象是决定如何实现对象之前, 人们对被开发对象的意义和行为的总体认识。 使用抽象可以 避免过早考虑被开发对象的一些 细节。 抽象有两种机制: 一是数据抽象, 它是分析和设计的核心, 是组织和建立系统规格说明 和设计说明的基础。 数据抽象把一组数据对象及作用在其上的 操作组成一个程序实体对象, 使得外部只知道它做什么, 而不必知道它如何做, 也不必知道其数据对象是如何表示的。 二 是过程抽象, 它为 对象的 相互作用提供依据。 具体化是指在细化过程中, 对对象的必要细节 加以刻划。 有助于确定系统对象, 加强系统模型的 稳定性。 面向对象的抽象到具体首先按功 能进行软件结构设计 ( 总体设计、 概要设计) , 然后进行对象设计 ( 详细设计) , 之后才是编 程 ( 计算机实现) 。 也就是先只按功能 考虑软件结构: 在详细设计阶段才加入功能的实现算 法: 在编程阶段再用具体的计算机语音实 现各对象的功能。 由 于一开始突出了功能 和软件结 构, 从而保证了 软件的功能完整性和可理解性。 面向 对象开发忽略事物细节, 突出重要特征, 先是建立应用域的逻辑模型, 然后加入细节和算法, 最后才是具体的实现, 从而很好地解决 了由于使用软件流程图 而带来的问 题。 4 . 面向 对象的重用性可以 解决软件需求带来的问 题。 面向 对象的可重用性可以 从两个方 面理解, 一方面是指以 前设计的系统中的 对象在新系统的设计中的应用; 另一方面是指在系 统中设计好一个对象后, 实际 上代表的是一类事物的集合, 就象 c语言中定义的结构类型 一样, 可以 通过类型说明 定义不同的对象实例。 它与结构类型的不同 在于对象不仅封装了数 据, 而且封装了操作, 因 此, 这里实际 上是起到了 代码复用的作用。 同时面向 对象技术强调 对象结构, 而不是程序结构和功能分解。 对象是客观存在的事物, 它基本不变, 而功能则是 相对的使用。 随着用户需求的变化, 功能以 及由 功能分解而得到的程序结构的 变化, 它与传 统的 面向功能的软件开发重点完全不同。 正是这一开发重点的转移带来两个巨 大的 变化: 首 先是软件的可维护性进一步改善, 因为当需求变化是基于对象结构的软件要改动的内容比 传 统软件少得多, 而且前面己 讲到, 利用继承可以 方便地实现对象类的修改; 另一个重要的变 化则是把对象作为软件重用的基本成分, 为软件开发的组装方式奠定了 基础, 不断适应用户 与软件开发人员相互熟悉而引起的软件需求的改变, 解决了 软件需求带来的问 题。 由 于面向 对象的技术是根据稳定的对象建立系统模型, 因而这些模型往往是稳定的, 可很好地适应需 求的变化。正是由于面向对象技术的重用性,大大提高了 软件的可移植性和可扩充性。 一一一 fo r.) n * #a t 一一一一一一 s . 用户 界面面向 用户, 提供优秀的、 方 便的、 高 效的系 统操 作界面, 是软件实用性的 一 个重要方面。 可以 说, 整个计算机软件的 发展史就是不断地改 进人机界面的 历史。 从机器语 言到汇编语言、第三代高级语言、 4 0 l和其它语言; 从手工 操作裸机到批处理系统、分时 系统以 至现代操作系统: 从命令语言到菜单驱动、 窗口 技术和图形界面等, 都是在不断地解 决软件的可操作性问 题。 今天, 计算机硬件技术已为我们创造了速度快、 容量大且价格低廉 的硬件环境, 为用户界面设计创造了 极为 有利的条件, 用户界面已不是可有可无。 随着软件 可维护性问题的基本解决, 用户界面的优劣己 上升为软件质量的首要因素。 由于面向对象技 术对人机界面的 设 计具有: 设 备无关性、 风 格一 致性、 界面 可剪 裁性 等, 所以 在人机界 面设 计中面向 对象技术使用越来越普遍,面向 对象技术在软件设计中发挥着越来越重要的作用。 1 .2 面向对象设计方法 面向对象方法是一种运用对象、 类、 继承、 封装、 聚合、 消息传送、 多态性等概念来构 造系统的软件开发方法。 其基本思想是: 从现实世界中客观存在的事物 ( 即对象) 出发来构 造系统,并在系统构造中 尽可能运用人类的自 然思维方式。 具体地讲, 面向 对象技术是从问 题域中客观存在的事物出 发来构造软件系统, 用对象作 为对这些事物的 抽象表示, 并以 此作为系统的基本构成单位。每个对象都有其属性和服务, 属性表示事物的 静态特征, 操作表示事 物的动态特征。 对象的 属性和服务结合为一体, 对外 屏蔽其内部细节, 称作封装。 把具有相同属性和相同服务的 对象归为一类, 类是这些对象的 抽象描述, 每个对象是它的 类的一个实例。 通过在不同 程度上运用抽象的原则, 可以得到较 一般的 类和较特殊的 类, 特殊类继承一般类的属性和服务。 复杂的 对象可以 用简单的对象作 为其构成部分, 称作聚合。 对象之间的消息通信表达对象之间的动态联系, 对象之间的关联 表达对象之间的静态关系。 因而, 在用面向 对象方法开发的系统中, 对象对应着问 题域中的各个事物, 它们内部的 属性与服务刻画了 事物的静态特性和动态特性, 对象类之间的继承关系、 聚合关系、 消息和 关联如实地表达了问 题域中事物之间实际存在的各种关系, 可直接地映射问 题域。 而实际上, 面向 对象方法之所以 会成为今天的主流技术, 其很重要的一个原因就在于模型对问 题域的这 种直接的映射。 这种直接映射使得从分析、 设计直到编程和测试、 维护成为了自 然且连续的 过渡过程, 从面使软件开发各阶段能够形成紧密的 衔接, 大大降 低了整个开发过程的难度、 工作量和出 错的可能性。 面向对象设计方法以 抽象数据类型为基本数据结构, 通过继承、 消息等概念和手段, 建 立抽象数据类型的实例 对象之间的联系, 从而形成由 对象及对象之间的关系构成的一种 软件体系结构。 这种结构十分类似于由客观实体及实体关系而构成的客观世界, 因而与客观 - 一 n a x -f 丝色一一一一一一一 世界的自 然结构有一种良 好的映射关系。 这一类似性决定了 面向 对象设计方法相对于其它设 计方法有更大的优势。 1 . 抽象数据类型 抽象数据类型类是面向 对象设计方法的基础, 为具有相同数据特征和相同操作的对 象的集合。 从实现角度考虑, 它包括数据定义和成员函 数两部分; 从与其它类的关系角度考 虑,它包括对象界面与内部实现两部分。 类由于私有的 数据和操作相对于外部系统完全独立, 功能局部化, 因 而增强了系统的功 能内 聚性, 有利于故障的定位, 便于程序调试与维护。 类可以利用私有操作, 对数据进行格式转换, 从而无论数据实际存储方式的变化, 可以 保持外部表现不变。 这种方式有利于各功能模块接口的 标准化, 便于开发任务的划分, 尤其 适合于大型软件的分工与协作。 而且,由 于数据存取方式的变化对系统其他部分没有影响, 易于使系统适应各种存储、传播媒介的变化。因此, 类特别适合于有多种数据来源的情况, 极大提高系统的 可扩充性。 同时, 这一方式允许通过不断改 进数据存取方法从而提高系统的 性能。 类可以 利用私有操作实现对输入输出 数据的校验,可以 提高系统的健壮性。 而如下文所述, 类的可继承性, 将极大提高软件的可重用性。 类的可重写操作将提供对 快速原型法的有力支持. z . 泛化与 特化 这是面向 对象设计方法中的 特有过程。 泛化与 特化是两个方向 相异的过程。 泛化是通过 提取几个类的共同 操作形成超类, 继而这几个类将通过继承, 作为该超类的导出类。 这完成 基本操作的超类同时可以 为其它类所继承。 显然这可以 减少重复劳动, 易于统一规格, 提高 软件的 可重 用性, 且便于统一维 护。 因 此, 为 提高 系统的 可重 用性和可维 护性, 超类的设 计 是关键。 为进一步提高系统的可重用性, 超类的设计应考虑多态性, 如排序操作既能 完成整数的 排序, 又能完成实数的排序, 还能完成指针、 结构的排序操作。 同时, 应该尽量利用类的 特 点将局部操作和数据私有化, 提高 模块的独立性。 特化过程则是利用类的可继承性, 在继承父类的基础上, 添加本类特有的操作, 从而实 现软件的由粗到细,由上到下的分层、分阶段开发。 3 . 基于消息的事件驱动方式 对象之间一般通过消息建立相互之间的联系. 消息映射其实是一种分支结构。 对象根据 消息的不同, 选择对象的不同方法对消息进行处理和响应, 从而实现对操作过程的间 接调用。 每一个对象相当于一个信息处理中心, 接受并处理各种消息。 这种方式是多任务系统的一种 面向对象技术 具体实 现, 构成了 面向 对象 程序设计方 法的 核心。 这种方法带来的 最重要的 变革在于帮 助软 件系统摆脱了原有面向 过程的程序设计方法的缺陷, 使得应用程序之间的通讯标准化。 这种 方式使应用程序之间、 不同系统之间实现协同 工作成为可能。 这一结构导致系统的开发方式 由 独立开发为主转变为系统集成为主。 但是, 由于消息的调 度依赖于操作系统, 增加了 软件对操作系统的依赖性。 这对于小型 应用系统, 如嵌入式系统不利。 而且,由于消息的响应是一种间接调用方式, 难以满足实时 系统对实时性的要求。 消息通讯方式在程序编码和运算时间 上都有一定的开销, 因此, 应该需要在系统灵活性 与复杂性之间进行适当 折衷。 如在较低层次上可以 采用结构化程序方式, 建立对象与对象之 间的关系。 对象和对象之间的关系有2 类四种, 一类是静态关系: 继承关系、 整体部分关系或叫聚 合关系、关联关系。一类是动态关系:消息连接。 - 一一 一一一一一一旦迥丝鱼塑型业塑一一 第 二 二 章f 向 对 象 技 术 在 通 讯 中 的 应 用 本章介绍应用面向 对象技术开发网 络通讯软件, 一种用于企业和公司内 部的文件传输系 统e f i l e 。 详细介绍了这个软件的开发方案、 所用到的关键技术和具体的软件实现, 在整个 设计开发过程中体现了面向对象程序开发思想的精髓。 2 . 1 开发背景 在一些中小企业和公司中, 往往有一个总部和若干个分部, 各个分部分处不同的地域。 由于中小企业本身财力有限, 所以 一般不会装备d d n 专线, 较容易采用总部设置一台 主机并 有一个固定的i p 地址,而各个分部采用拨号上网的方法来实现企业和公司内 部的文件传输 和交流。 但是由于拨号上网本身存在速度慢, 可靠性差等弱点, 所以 往往在传输文件时要么 等待时间太长令人厌烦, 要么时常中断不得不重发一次。 对大一点的文件尤 其如此。 在使用 的文件传输工具上, 经常使用e - m a i l 和f t p ,前者经常发生文 件丢失现象,并且无断点续 传功能, 只要一有中断就得重头再来; 而后者虽有断点续传功能, 但操作不方便, 安全性也 较差, 也存在传输时间的问 题。为此就考虑设计一种集e - m a i l 和f t p 两者之长处的企业和 公司内 部的 文件传输系统, 它具有的便捷性和断点续传功能, 并能在现有的网络环境中 达到 最大的 数据传输量。 所以需要设计一种企业内 部网 文件传输软件, 它适合用于总部有主机并有固定 i p ,各 地的分部采用拨号上网的环境。 要求使用方便,传输可靠, 速度快。 2 . 2 设计方案 根据软件的设计要求并从各方面进行考虑,这个通讯软件的设计将包括以下几个方面: 2 . 2 . 1 总体结构 在总体上, 采用服务器/ 客户端的结构,即程序分为服务器端和客户端两部分。 考虑到 企业或公司在各地可能有分公司, 所以 为了文件传输和组织方便, 将服务器程序分级, 即有 一个总的文件服务器, 在它下面是下一级的文件服务器, 各下级服务器管理一定区域内的文 件转发。 各个客户端与一个上级或下级服务器相连, 进行收发文件操作。 这个文件传输系统 的总体结构如图1 所示。 各个服务器都有一个服务器名, 以 便于分发邮件, 服务器根据传送文件头中所列的 传送 目 的地址对文件进行分发。 _ f o到望渔翌吵鱼塑匕一一一一一一 总服务器 图1 软件总体结构 2 . 2 . 2 文件传输过程 整个文传输的过程是, 客户端有文件发送时, 首先拨号上网, 然后与远端服务器进行连 接, 当 连接成功后, 服务器端首先检查该客户的 文件箱内 有无文件, 当 有要发送给该客户的 文件时, 就首先向 该用户发送这些文件。 客户端接收完这些文件后, 就会向 服务器发送客户 要传送的文件。 整个过程在客户端可以自 动进行, 无需客户干预, 客户所作的只是写好要发 的文件并把它放入程序的发送文件夹内。 服务器接到的邮件会放入一个临时目 录中, 文件传 送服务程序会定时检查这个临时目 录, 当发现目 录中 有待转发的 文件时, 就顺序打开传送文 件检查文件头, 然后根据文件头中的传送目 的地址或者把它发送到它所管理的 某个用户的收 件箱中, 或者把文件转发到该用户所属的某个服务器。整个过程如图z 所示。 图z 文件的传输过程 2 . 2 . 3 通讯协议的设计 根据这个文件系统的结构, 整个通讯协议分为两部分, 即 用户端和服务器端的 通讯协议 _ 止丝些塑述些塑丝返坠一一一一一一 和服务器之间的 通讯协议。 这个通讯协议是属于应用层的协议。 协议本身提供了对断点续传功能的支持。 为了 保证在错误率很高的拨号网络上准确的传 输文件, 文件传输方式采用了问 答的 方式, 即发送方发送一段信息后, 等待接收方的应答信 息, 只有得到接收方的收到确认应答信号后才再继续发送下一段信息。 在接收方, 当 它收到 一段信息后, 会检查接收信息的 完整性, 如果接收正确, 则向 发送方发送接收确认信号; 如 果出 现接收错误, 则它会向发送方发送重新发送同一信息的请求, 发送方在接到这一请求后, 便会重新发送当前信息。整个过程反复进行直到当前文件发送完毕。 对于通讯的连接建立, 整个连接分为控制连接和数据连接。 在服务器端首先设定一个监 听端口 , 服务器程序端打开并监听这个端口。 用户端在与服务器连接时首先与服务器的监听 端口建立连接, 连接成功后用户端向服务器发送用户名和密码以进行登录请求. 服务器接到 用户名和密码后进行身份确认, 确认通过后服务器发送登录成功应答信息。 用户端在登录成 功后, 当需要进行文件传输时, 就向 服务器发送文件传送请求. 服务器接到请求后, 会开启 数据端口 监听程序, 对数据端口 进行监听, 用户端将试图同 服务器的数据端口 进行连接, 连 接成功后文件传输便即开始。 这个连接的过程如图3 所示。 如果所连接的 用户是超级用户或 用户具有一定的管理权限,则在控制连接上可以进行系统管理和用户管理的工作。 用户端 登录请求 控制连接线程 控制连接建立 文件传输服务器 控制端口 监听线程 登录确认 数据连接线程整些竺色 j 一 蘸蔽9 uh ft v 图3 连接过程 2 . 2 . 4 用户的组织 仿照一般的多用户的系统的做法, 这个文件传输系统中的用户也分成用户组, 不同的用 户组具有不同的系统权限, 这样做既方便了 用户的管理, 也加强了系统的安全性. 同 样, 在 这个文件传输系统中 也有超级用户存在, 并且支持超级用户的 远程管理。 在用户组中, 有一 个组管理员,负责管理本组的用户。 在用户登录时, 服务器程序会检查这个用户的 权限, 并将它的 权限发送会用户端, 用户 端程序会根据当 前用户的权限打开或禁止某些管理功能。 同时, 对于每一次的管理操作, 服 务器端都会检查请求操作用户的权限, 如果发现权限不符, 便会拒绝操作请求. 这样做是为 一 一亘竺鱼创竺竺丝塑塑匕一一一一 了提高这个邮件系统的安全性。 在服务器端, 会有一个数据库记录所有的用户及其相关信息。 增、 删及更改用户的 操作 由 超级用户或组管理员进行。 每个用户都有自 己的一个文件夹, 用来存放别人发给自 己的文 件。 除本地用户外, 任何一个用户是无权进入他人的文件夹的。 一般用户只具有收发自 己文 件的权利。 2 . 2 . 5 断点续传 断点续 传功能的 实现是本 传输软件的 关键, 如果没 有此功能, 本软 件将无任何意义。 在 设 计实现上要从通讯协议和软件设计这两方面入手。 在通讯协议的设计上要设置断点续传功 能所必需的应答机制; 在软件设计上要对文件的传输进行监控, 并在传送中断时纪录文 件中 断的断点,以在恢复连接后继续传送文件。 在实现上考虑在用户端设置一个文件传输记录文件, 对中断的 文件进行记录, 包括文件 的 名称、 传送时间、 己 传字节数等信息。 当 用户登录系统成功后, 可以 检查是否有未完成的 文件传输, 如果有未完成的记录, 则用户可以 选择继续传送该文件或者删除该项记录。 同时, 程序还要设置一个自 动模式, 在此模式下, 用户登录网络一成功, 程序自 动检查文件传输记 录, 如果记录非空, 则自 动按顺序取出记录并进行未完成文件的断点续传工作, 一直进行到 所有记录都完成。 在断点续传过程中, 如果再次发生中断, 则程序会将新的中断点记录入文 件传输记录文件。 在协议的支持上, 为了 方便文件传输字节数的记录, 对于文件的传送采用定长的数据块, 每个数据块都按顺序进行编号, 通过这个编号文件的收发双方就可以 进行收发确认的 操作, 保证文件传递的准确性. 数据块的前面有一个数据头, 其中有一个数据用于记录数据块的编 号。通讯协议设置了请求重发文件和请求重收文件及它们的应答信息。 重发文件的过程为: 首先用户端程序向服务器发送重发文件请求。 这个请求内 包括需重 发的文件名称, 服务器接到请求后就检查的服务器端的 接收文件夹中是否有该文件存在, 如 果有就打开该文件并计算文件的长度, 即服务器已 经收到的字节数, 然后发送允许重发信息, 这个信息中 包括了己 收到的 字节数。 客户端接到重发允许信息后, 就启动数据连接线程, 打 开本地的对应文件, 根据服务器已 收字节数将文件指针定位到相应字节处, 并读取一个数据 块的字节数然后加上数据头开始文件传送。如果服务器端因某种原因导致所请求的文件丢 失, 则服务器会告知用户端找不到该文件。 这时, 用户端就会发送文件传送请求, 来重新发 送这个文件。 这样就保证了 发送的 文件不会因中断而丢失。 重新接收文件与此类似, 用户端 先发送重新接收请求, 其中 包括已 接收到的字节数, 服务器接到请求后, 就到用户的文件夹 中寻找请求文件并打开这个文件( 在服务器一端, 除非收到用户端的文件接收或发送完成确 认信息,不会删除用户目 录中的 任何文件, 这样保证文件不会丢失) , 并将文件指针移到相 一 一旦塑塑丝鱼醚塑些遇一一一一一 应的 字节处, 然后开始传 送文件。 2 . 2 . 6 使用多线程 为了在拨号网 络这一低速网 络上提高 文件的传输速度, 我们仿照网 络蚂蚁的方式采用多 线程机制, 以 最大限 度的利用网 络带宽。 只不过我们并没有将文件分块, 由于这个软件传输 的大部分是邮件一类的东西, 文件长度一般不会很大但数量可能很多, 所以 这种方式效率应 与网络蚂蚁的类似。 2 . 2 . 7 其它 传输文件的设计是依据e - m a i l 的文件格式写的, 这样做可以使本系统与e - m a i l 系统兼 容,用户可以 通过这个系统向 外网 发送文件, 使用户使用更方便。 用户端界面的设计总的思想是界面直观, 操作方便, 实现友好的 人机界面。 在具体设计 上参考当今流行的一些f t p 软件 ( 如c u t e f t p )的界面和微软的o u t l o o k 的界面。 在收发文 件的方式上和在发送文件的 建立上, 都仿照微软的o u t l o o k 的方式, 这样做是为了 方便用户 使用, 使一般用过o u t l o o k 的用户很快就可以熟悉本软件的 使用。 2 . 3 开发的关键技术: 2 . 3 . 1 s o c k e t 技术 s o c k e t 是实现进程间通讯的b s d方法, 这句话的含义既是s o c k e t 实际上是用来让一个 进程向另外一个进程讲话,就好像电话可以使一个人向另一个人说话一样。 用电话来比喻 s o c k e t 实际上非常贴切, 所以 人们经常把s o c k e t 和电 话相提并论。 s o c k e t 可以看作网络通信的一个端点, 网络通信包括两台主机或两个进程, 通过网络传 递它们之间的 数据。网络对话的 每一段成为一个端点。当 使用 s o c k e t 接口 对网络通信编程 时, s o c k e t 就是网 络通信过程中 端点的 抽象表示。 为了 通过s o c k e t 接口 进行网 络通信, 程 序在网 络对话的每一端都需要一个 s o c k e t .两个s o c k e t 之间的 连接可以 是面向 连接的,也 可以是面向无连接的。 0 建立一个s o c k e t 当一个人想要接到别人的电话时, 他必须首先安装一部电话。同样, 在网络通讯中必须 一亘塑终兰丝a竺壑塑匕一一一一 首先创建一个 s o c k e t 以 接收别人的请求。 这一个过程需要分为几步。 第一步就是创建一个 新的s o c k e t , 就像安装一条电话线一样。 当编写t c p / i p 程序时, 需要使用无连接和面向 连接的协议, s o c k e t 接口 可以 让程序通 过一个 s o c k e t 连接使用这 两种 类型的 协议, 但是程序 使用不同 的步 骤来建 立 s o c k e t 和将 s o c k e t 连到目 的主机上。为了 建立s o c k e t , 程序可以调用s o c k e t 函数,s o c k e t 函数返回一 个类似于文件描述符的句柄, s o c k e t 句柄确定一个提供此s o c k e t 信息的描述符表入口。 由于s o c k e t 有多种类型, 所以 必须在创建时确定s o c k e t 的 类型。 其中一个选项是s o c k e t 的地址类型。 就像邮寄 服务使用不同于电 话服务的方式来递送邮件一样, s o c k e t 也有不同的 地 址 方 式。 最 常 用的 两 种 地址 格式 是a 几 u n i x 和a f i n e t . a 凡u n i x寻 址 使 用u n i x 路 径来确定 s o c k e t :这种 s o c k e t 对于同一台机器上的不同进程间的进程通讯十分有用。 a f me t寻址使用i n t e rn e t 地址, i n t e rn e t 地址有四个字节长, 通常写成以隔点分开的四 个 整 数串. 除了 机器 地址外, 还有一 个端口 号以 使同 一台 机 器可以 有一 个以 上的a f ee i n e t s o c k e t . a f 一 i n e t是 现在 使用 最广泛的s o c k e t 地址类型。 另外一个在创建 s o c k e t 时必须提供的选项是 s o c k e t的类型。最常用的两种类型为 s o c k s t r e a m和s o c k 一 d g r a m . s o c k s t r e a m表 示 数 据 使以 连续 的 字 符流 的 方 式 通过s o c k e t ; s o c k es d g r a m表示 数据是以 簇( 称为数 据报) 的 方式 通过s o c k e t 的。 其中, s o c k s t r e a m是最常用的方式。 t c p q p 协议可以让程序使用面向 连接或无连接的网络通 信。 在面向 连接的网 络通信中, 数据使用s o c k s t r e a m方式 按照字节流形式流动: 在 无 连接网 络通信中, 数 据使 用s o c k d g r a m方式 按照数 据报的 形式 流动. s o c k e t 函 数第 二 个参数指明了 想使用的通信服务类型。 在创建一个s o c k e t 后,必须给定s o c k e t 一个地址来监听, 就像有一个电 话号码来接受 别人的电话。 b i n d 函数即是完成此功能的函数, 顾名思义这个函数就是将一个端口 与s o c k e t 进行绑定。 s o c k s t r e a m类 型 的s o c k e t 具 有 将 连 接 请 求 进 行 排 队 的 能 力 , 就 像 打电 话 时 如 果占 线就必须等待一样。 如果正在忙于处理一个连接请求, 则其它的连接请求就会等待直到能够 处理它们的请求。 l i s t e n 函 数用于设置请求队列的 最大数量, 超过这个数量的请求将被丢弃。 l i s t e n 函数并不是必需的, 但 这却是 一个好习 惯。 在创建了 一 个等待呼叫的s o c k e t 后, 使用a c c e p t 函 数来守 候。 调用a c c e p t 函 数就 像电 话 铃响了 之后拿 起电 话. a c c e p t 函 数返回 一 个与呼叫 者相连的 新创建的 s o c k e t 。 与电 话 不 同的是,在处理前一个连接时仍然可以 接受呼叫。 在知道了如何创建一个能够接收呼叫的s o c k e t 后, 那么如何呼叫这个s o c k e t 呢?首先 必须有一台电 话机, 也就是必须创建一个s o c k e t 。 可以 使用s o c k e t 函数来实现s o c k e t 的创 建, 这与创建监听 s o c k e t 一样。 在有了这个s o c k e t 后,给它一个地址,然后使用 c o n n e c t 函数让它试着与监听s o c k e t 进行连接。 一亘望堡垫丝竺塑塑翌1一一一 当 建立了s o c k e t 之间的连接后, 如何在它们之间传送数据呢?使用r e a d 和w r i t e 函数就 行了,就像用他们对文件进行操作一样。 在数据传送完之后, 就像挂掉电话一样, 必须关闭s o c k e t 之间的 连接。 c l o s e 函数用来 关闭s o c k e t 连接的任一端。如果s o c k e t 连接的一端被关闭,另一端试图 进行读操作时会返 回一个错误。 . wi n s o c k 随着i n t e r n e t 的普及以 及w i n d o w s 系统的广泛使用,基于w i n d o w s 平台的网 络编程变 得非常重要。 w i n s o c k 定义了m i c r o s o ft w i n d o w s 网 络编程的接口, w i n s o c k 是基于s o c k e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三八节扎染活动策划方案
- 湖北bim咨询服务方案
- 楼外墙石材幕墙施工方案
- 招标代理咨询实施方案
- 湖北小型攀岩墙施工方案
- 引客进店活动方案策划
- 旅游咨询创业项目方案
- 更年期症状与生活质量关联性分析-洞察及研究
- 咨询室房顶设计方案
- 材料吸声特性研究-洞察及研究
- 志愿者安全培训课件
- 私募基金管理人尽职调查清单
- 前列腺剜除术手术技巧
- 居民自建桩安装告知书回执
- 科普:农药毒性分类
- 陈阅增普通生物学第1篇3细胞结构与细胞通讯教学课件
- 练习使用显微镜 全国公开课一等奖
- 【执业药师考试】执业药师历年真题
- FZ/T 81004-2022连衣裙、裙套
- GB/T 34875-2017离心泵和转子泵用轴封系统
- 故障录波器课件
评论
0/150
提交评论