ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:116.51KB ,
资源ID:7726030      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7726030.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(详细设计说明书.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

详细设计说明书.docx

1、详细设计说明书 分布式文件收集备份系统 详细设计说明书执 笔 者xxx日 期2014.7.2指导教师xxx 二一四 年 六 月 二十八 日 计算机科学与技术系目录1 引言 2 1.1 编写的目的 2 1.2 背景说明 2 1.3 定义 2 1.4 参考资料 32 总体设计 3 2.1 功能规定 3 2.2运行环境 33 系统实现-详细编程计划 4 3.1程序流程图 4 3.2 主要模块 4 3.3 各个目录的情况简介 54 本项目用到的相关技术和知识点 135 涉及到的技术难点: 131 引言当今社会,人们的信息越来越多,也越来越重要,人们对信息的安全和保护的意识也越来越高。为了能给人们的重要

2、信息提供备份和保护,我们准备开发一套“分布式的文件收集备份系统”,这个系统包括服务端和客户端两大方面,客户端用来监控和发送信息,服务端用来接收和保护信息,这套系统将起到对重要文件的自动采集与备份的作用,让人们不再为重要信息的丢失而担心。1.1 编写的目的本文档将对分布式文件收集备份系统软件开发详细设计进行描述,本文档的读者是程序员、项目策划、设计和评审人员。1.2 背景说明a待开发的软件系统的名称:分布式文件收集备份系统b本项目的任务提出者:本项目组c开发者单位:河北工程大学科信学院计算机科学与技术1班d开发者:王鹏,刘延召,陆桂华,姚晓媛,张荣荣1.3 定义流程图:表示生产过程中事物各个环节

3、进行顺序的简图。功能结构图:将系统的功能进行分解,按功能从属关系表示的图表。管理信息系统的各子系统可以看作是系统目标下层的功能,对其中每项功能还可以继续分解为第三层、第四层甚至更多的功能。1.4 参考资料1 Unix 环境高级编程-W.Richard Stevens著2 Unix 网络编程,卷1-W.Richard Stevens著3 C语言程序设计-Brian W.Kernighan,Dennis M.Ritchie著4 计算机网络第五版-谢希仁著2 总体设计 2.1 功能规定功能简介:在客户端实现对客户重要信息的监控和发送,客户端要保证监控到客户所有重要信息,不出错,保证对信息的传出速度要

4、快,保证程序的健壮性,安全性。在服务端实现对分布式客户端信息的采集,接收和备份保护,服务端要保证能够实现对N台客户端的负载,并发处理客户端的请求,提高对N台客户端的处理速度,保证程序的健壮性和安全性。2.2运行环境2.2.1设备 硬件最低要求:内存256MB以上,硬盘40MB以上。2.2.2支持软件操作系统及编程工具:(1)linux操作系统 (2)gcc编译器(3)vim编辑器 (4)支持makefile (5)支持网络功能3 系统实现-详细编程计划3.1程序流程图以上是本次项目的程序的大致流程图,这是目前的设计状况,如果有需求变化,我们还可以改进3.2 主要模块本系统将主要分为服务端和客户

5、端两大模块,服务端与客户端运行时是独立的,互不干扰的,所以他们分别在不同的文件夹下,计划设计为如下:-有两个目录分别是:(1)Client目录-负责客户端的程序(2)Server目录-负责服务端的程序还有一个目录:sync_file-负责日志文件的处理工作:-3.3 各个目录的情况简介下面对各个目录的情况进行简要分析:3.3.1client目录:在client目录中,将会有以下文件:下面对这些文件的作用进行进行简要讲解:(1)check_send_file.h中是对监控系统函数的定义,主要有以下函数的定义他们实现了监控系统的主要工作。(2)监控系统的实现,将使用linux的inotify事件监

6、控机制。 Inotify 是文件系统事件监控机制,计划包含在即将发布的 Linux 内核中作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。 Inotify是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。使用 inotify 取代 dnotify 的原因有很多。第一个原因是,dnotify 需要您为每个打算监控是否发生改变的目录打开一个文件描述符。当同时监控多个目录时,这会消耗大量的资源,因为有可能达到每个进程的文件描述符限制。 Inotify的使用并不是很难,所以我们借助它来实现我们的监控系统。(3)check_send_f

7、ile.c中是以上函数的实现。函数的实现将在下一学期完成。(4)send_file.h,它里面将定义用来打包和发送文件信息的函数。 它将主要有以下内容:Fill_packet( ) 函数负责信息的打包,打包时会用到我们自定义的简单协议包。Send_file( ) 函数用来负责对信息的发送,它将用到x_socket.h中定义的接口函数。在概要设计书中,已有信息打包和发送的过程,下面再次对信息的打包和解包进行简要介绍:协议包的定义如下: _| | | | packet_length | data_type | data | | | |-|Packet_length的数据类型是int型, 在32位系

8、统下,占4个字节Data_type 的数据类型是short型, 在32位系统下,占2个字节Packet_length的意思是整个包体的长度。Data_type 的意思是data的类型,Data_type主要有四种,分别是: TYPE_FILE_NAME,代表文件名 TYPE_FILE_SIZE,代表文件的大小 TYPE_FILE_CONTENT,代表文件内容 TYPE_FILE_END,代表文件结束下面列举一个完整的打包发送,和解包的过程,让大家了解打包发送信息的流程。比如,一个名称为file.txt的文件,其中的内容是“hello”。那么,将这个文件发送到服务器的步骤是(注意:我们每次向服务

9、器发送内容,都是先将信息打包再发送,让后在服务器端,会有相应的方式解包): a.将“file.txt”打包,打包后整个包体的内容包括: packet_length,data_type和data。 packet_length 的值是4加2再加上“file.txt”所占的字节数 data_type 的值是TYPE_FILE_NAME Data 的值是“file.txt” 这样,信息“file.txt”就被打包好了,然后,会使用socket 系列API,经过网络将其发送到服务器端。 当服务端收到这些信息后,它通过解包就会明白,它收到的 这个信息是一个文件的文件名,服务端将会创建出子进程,让子 进程去

10、创建 一个名为“file.txt”的空文件。而父进程会继续监听 其它客户端的连接。 b.将文件的大小发送过去,文件的内容是“hello”,文件的大小 便是“hello”所占的字节数,假如是大小N。 将数字N打包后整个包体的内容包括: packet_length,data_type和data。 packet_length 的值是4加2再加上数字“N”所占的字节数 data_type 的值是TYPE_FILE_SIZE Data 的值是“N” 这样,信息“N”就被打包好了,然后,使用socket系列 API,经过网络将其发送到服务器端。当服务端收到这些信息后,它通过解包就会明白,这是文 件的大小,

11、这样服务器就知道了它要备份的文件的大小。 c.将文件的内容发送过去,文件的内容是“hello” 将“hello”打包后整个包体的内容包括: packet_length,data_type 和data。 packet_length 的值是4加2再加上“hello”所占的字节数 data_type 的值是TYPE_FILE_CONTENT Data 的值是“hello” 这样,信息“hello”就被打包好了,然后,使用socket系 列API经过网络将其发送到服务器端。当服务端收到这些信息后,它通过解包就会明白,这是文件 的内容,内容是“hello”,这时服务端就会将此内容写在刚才建立 的名为“f

12、ile.txt”的空文件中。 d.发送一个结束标志-TYPE_FILE_END, 表示这个文件的全 部信息已经发送完。 发送结束标志只发送包头即可,因为没有内容,也就没有包 体。 此次要发送的包的内容包括:packet_length,data_type(注意,这里没有data) packet_length 的值是4加2 data_type 的值是TYPE_FILE_END当服务端收到这些信息后,它通过解包就会明白,一次完整的 文件接收备份过程已经完成。此时,服务器将释放本次工作用到的 相关系统资源。以上详细说明了一个文件在客户端打包发送,并在服务端进行解包备份的全过程。这四步全部完成后,表示整

13、个文件的所有信息发送完毕,这样一个重要的文件也就成功的备份到服务端。(5)send_file.c,这里边将是以上函数的实现,下学期,我们将会对其进行实现。(6)x_socket.h,我们将对socket系列API进行封装使用,这里是socket系列函数封装后的定义,它会完成客户端与服务端的连接,信息发送与接收,和网络优化等工作。它的内容将会是如下:Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Uni

14、x操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。关于linux/unix平台下的网络编程相关内容,我们主要参考了Unix网络编程本书,有兴趣学习,或想了解的同学,可以参考这本书。(7)x_socket.c,这里将是以上函数的具体实现,我们将在下一学期完成。(8)client.c,这里是整个客户端程序的逻辑流程,最后的客户

15、端可执行程序,就由它来生成。具体实现,我们将在下一学期完成。(9)makefile,makefile文件会把整个项目的所有文件的逻辑关系,和依赖关系及编译方法,写清楚。Makefile可以很复杂,也可以很简单。具体的实现,我们下一学期,视情况而定。以上,是client目录的情况,下面介绍server目录的情况。3.2.2 Server目录情况简介:下面对各个文件进行简单介绍:(1)x_socket.h 和x_socket.c 在介绍client目录时,已经介绍,它们的作用是对socket系列函数的封装和使用,负责网络和网络优化的工作。这里不再做过多的介绍。(2)recv_file.h,它负责接

16、收客户端发来的信息,并解包和备份文件。它的主要内容将主要有以下内容:recv_file.c,它里边是对recv_file.h头文件中内容的实现,我问将在下一学期给出集体的实现过程。(4) my_lib.h中是一些辅助处理细节的函数,比如守护进程的编写,等等。(5) my_lib.c中是对my_lib.h中所定义的内容的实现,具体实现,我们将在下一学期给出来。server.c,这里是整个服务端程序的逻辑流程,最后的服务端可执行程序,就由它来生成。在它里边会有“并发服务器”的实现过程,能够同时为N台客户端服务,提高服务器的负载能力。具体实现,我们将在下一学期完成。(7) makefile,make

17、file文件会把整个项目的所有文件的逻辑关系,和依赖关系及编译方法,写清楚。Makefile可以很复杂,也可以很简单。具体的实现,我们下一学期,视情况而定。3.2.3 sync_file目录的情况如下:其实就是一个小型的日志库,本目录的内容,重要负责日志系统的相关实现,负责记录整个系统的运行情况,用户可以通过查看日志文件的内容,来了解系统的运行情况,系统是否出错等信息。在客户端与服务端都会这个日志库,来分别记录客户端与服务端的运行情况。一个稍微大型的日志库设计,就是一个不小的项目,需要顾及到很多方面。在正真的工作当中,可能也不需要自己来编写日志库,因为有现成的或开源的日志库可用。但也可能现有的

18、日志库的性能不是太好,因为它是开源的,我们也可以根据下需要,去修改它,来方便自己的使用。我们编写的这个小日志库,会实现最基本的日志需要,如果时间充足的话,我们可以再扩展这个日志库,使其能够应对更加多变的情况。目前,这个小日志库的设计如下:以上是主要的日志函数的定义。在x_log.c中将是以上函数的具体实现,详细的实现的过程,将在下一学期给出。3.2.4 配置文件除了以上的内容,还有一个模块是配置文件的模块。配置文件是在系统运行之前,用户对系统的配置,客户端与服务端都将会有配置文件。常用的配置文件的格式主要有ini格式的,xml格式的,和json格式的等。我们将选择其中一种来实现配置文件。客户端

19、需要的配置项主要有: (1)服务器的ip地址。 (2)所监控的目录。 (3)日志文件存放的地方等。服务端需要的配置项主要有: (1)接收到的客户端的文件的存放的地方。 (2)日志文件存放的地方等。下一学期,我们会给出配置文件的具体实现。说明:因为我们这套软件是在linux系统下做的开发,而在linux平台,大部分的操作都是命令行的,所以不需要有什么界面,因此,我们的这套系统,也没有设计什么用户界面,只需要在命令行中敲入简单的命令即可使用。4 本项目用到的相关技术和知识点(1)c语言程序设计(2)linux/unix开发平台的运用(3)makefile的编写(4)多进程程序的开发(5)linux

20、/unix文件目录的操作(6)信号的控制和使用(7)S/C模式的应用软件开发(8)并发服务器的编写(9)守护进程原理及其编写(10)socket网络编程(11)日志系统编写(12)监控系统(13)简单的引用层协议的设计(14)配置文件编写5 涉及到的技术难点:(1)怎样让一个服务器去应付成千上万的客户端的连接,怎样让服务器能够承受更大的负荷压力?(2)怎样可以对网路的传输速度进行优化,使得文件在传输的过程中更快?(3)怎样让服务器更加健壮,能够应付多样的突发事件,怎样编写高性能服务器?(4)怎样让CPU的利用率降下来?即让我们的程序占用最少的系统资源,去完成更多的工作?(5)怎样保证客户端程序的健壮性,保证监控系统的健壮性?(6)等等

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1