(计算机软件与理论专业论文)cobol2002跨平台集成开发环境的研究与实现.pdf_第1页
(计算机软件与理论专业论文)cobol2002跨平台集成开发环境的研究与实现.pdf_第2页
(计算机软件与理论专业论文)cobol2002跨平台集成开发环境的研究与实现.pdf_第3页
(计算机软件与理论专业论文)cobol2002跨平台集成开发环境的研究与实现.pdf_第4页
(计算机软件与理论专业论文)cobol2002跨平台集成开发环境的研究与实现.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机软件与理论专业论文)cobol2002跨平台集成开发环境的研究与实现.pdf.pdf 免费下载

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

文档简介

西北工业大学硕士学位论文 摘要 c o b o l 是c o m m o nb u s i n e s s o r i e n t e dl a n g u a g e ( 公用面向商业的语言) 的 缩写,它产生于二十世纪六十年代。c o b o l 不断的演变并吸收计算机技术的进展, 并在2 0 0 2 年产生了最新的2 0 0 2 标准。如今,c o b o l 作为企业的解决方案,在商业 软件中占极大比例。因此,一个便捷的c o b o l 语言集成开发环境就具有很大的研 究意义与市场价值。 笔者就从2 0 0 2 年开始参与了一个c o b o l 2 0 0 2 集成开发环境的研发工作。该 系统采用c s 结构,客户端在p c 机的w i n d o w s 平台上,它具有一个图形开发界 面,并通过底层通信模块与服务器端通信:而服务器端在h p u n i x 上包含了 各个核心功能模块:编译、调试、文件管理和认证。在开发过程中,笔者参与 了服务器端框架结构和通信协议的设计工作,并在深入研究进程间通信理论的 基础上,提出了文件管理和调试器的实现方案。在此基础上,完成了本论文。 本文首先概要介绍了c o b o l 2 0 0 2 集成开发环境的结构。然后说明了服务器 端的框架设计和通信协议设计,描述了如何与客户端通信并为之提供服务。再 次,详细说明了文件管理和调试器的设计与实现,提出了文件控制表( f c t ) 和 源文件库( s f l ) 的概念。最后,对系统中存在的问题和后续工作进行了简单的 总结。 关键字 : c o b o l ,集成开发环境,w o r k b e n c h ,服务进程,服务线程,文件访问控制 表,源文件库,调试器 西北工业大学硕十学位论文 a b s t r a c t t h ec o m m o nb a s i co r i e n t e dl a n g u a g e ( c o b o l ) w a sc r e a t e di n6 0 so ft h e 2 0 “c e n t u r y w i t ht h ed e v e l o p m e n to fc o m p u t e rt e c h n o l o g y ,c 0 8 0 lh a sm a d e c o n s r a n te v o l u t i o ni nr e c e n ty e a r s i n2 0 0 2 c o b o l 2 0 0 2w a se s t a b l i s h e d a st h el a t e s t s t a n d a r d n o w a d a y s ,a sh i g h q u a l i t y s o l u t i o n sf o r e n t e r p r is e s ,c o b o l a c c o u n t sf o rt h ev a s tm a j o r i t yo fc o m m e r c i a l s o f t w a r e s t h e r e f o r e ,t h ed e v e l o p m e n t o fac o n v e n i e n t i n t e g r a t e d d e v e l o p m e n te n v i r o n m e n t ( i d e ) f o rc o b o l1 a n g u a g eh a sb o t hg r e a ta c a d e m i c s i g n i f i c a n c ea n de n o r m o u sc o m m e r c i a lv a l u e s i n c e2 0 0 2 ,t h ea u t h o rh a sd e v o t e dh i m s e l ft ot h ed e v e l o p m e n to ft h e c o b o l 2 0 0 2s y s t e m ,w h i c hi sa ni d ef o rt h ec o b o ll a n g u a g e t h es y s t e m a d o p t st h ec sa r c h i t e c t u r e t h ec l l e n t e n d ,w h i c hi so nt h ew i n d o w so s , h a sa g r a p h i ci n t e r f a c ea n dc o m m u n i c a t ew i t ht h es e r v e re n d ,a n dt h e s e r v e r e n d ,w h i c h i so nt h eh p u n i x ,p r o v i d e sm a i nf u n c t i o nm o d u l e s : e o m p i l e r ,d e b u g g e r ,f i l em a n a g e m e n ta n da u t h e n t i c a t i o n a so n eo ft h e i m p o r t a n tp a r t i c i p a n t s ,t h ea u t h o rn o to n l yd e s i g n e dt h ef r a m e w o r ko f t h es e r v e r e n da n dc o m m u n i c a t i o n p r o t o c o l , b u tm a d ef u r t h e r i n v e s t i g a t i o no ni n t e r p r o c e s so fc o m m u n i c a t i o n sa n dp u tf o r w a r dt h e a c c o m p li s h m e n tm e a n so ff il em a n a g e m e n ta n dd e b u g g e r a 1lt h o s ew o r k c o n s t i t u t e st h em a i np a r to ft h i st h e s i s i nt h i st h e s i s ,t h ew h o l ea r c h i t e c t u r eo ft h ec o b o l 2 0 0 2s y s t e mi s b r i e f l yi n t r o d u c e df i r s t t h e n ,t h ed e s i g no ft h ef r a m e w o r ko ft h e s e r v e r e n da n dt h ed e s i g no fc o m m u n i c a t i o np r o t o c o la r ep r e s e n t e d ,a n d t h u sd e s c r i b eh o wt oc o m m u n i c a t ew i t ht h ec l i e n t e n da n dp r o v i d es e r v ic e f o ri t a f t e rd e p i c t i n gt h ed e s i g na n da c c o m p l i s h m e n to ff i l em a n a g e m e n t a n dd e b u g g e ri nd e t a i1 ,t h ec o n c e p t i o n so ft h ef i l ec o n t r o lt a b l e ( f c t ) a n dt h es o u r c ef i l el i b r a r y ( s f l ) a r ep r o p o s e d f i n a l l y ,t h ed e f i c i e n c y 0 ft h es y s t e ma n ds o m ef u t u r ew o r ka r ed i s c u s s e d k e y w o r d : c o b o l ,i n t e g r a t e dd e v e l o p m e n te n v i r o n m e n t ( i d e ) ,w o r k b e n c h ,s e r vi c e p r o c e s s ,s e r v i c et h r e a d ,f i l ec o n t r o lt a b l e ( f c t ) ,s o u r c ef i l el i b r a r y ( s f l ) ,d e b u g g e r 西北工业大学硕士学位论文 第1 章绪论 1 1 研究的背景 c o b o l 是c o m m o nb u s i n e s s o r i e n t e dl a n g u a g e ( 公用面向商业的语言) 的 缩写。c o b o l 自6 0 年代初开始就广泛应用于计算机领域( 商业和其他领域) 。 c o b o l 是采用英语语法的高级语言,以其可读性、可维护性和可移植性受到商 业单位和政府部门的青睐。c o b o l 不断的演变并吸收计算机技术的进展。与许 多当代编程语言不同的是,c o b o l 针对商业世界的使用,它是真正商用应用程 序开发的首选语言。如今,c o b o l 是企业的解决方案。 c o b o l 是面向数据处理的语言。数据处理就是对各种类型的数掘进行收集, 存储,传送,分类,排序,计算以及打印报表,输出图象等。实际问题中处理 的数据量一般很大。 它主要有以下几个特点: 1 ) 最适合数据处理。 2 ) 接近自然语言。 3 ) 标准化程度高。 4 ) 结构严谨、层次分明,语句都有严格的格式要求。 c o b o l 语言的发展主要经历了四个标准: 1 1 9 6 8 年,美国标准协会批准了c o b o l 分会开发的标准,发布号为 x 3 2 3 一1 9 6 8 ,这个文档定义了c o b o l 内核和八个功能模块。 2 1 9 7 4 年对上一个标准进行了修订,发表了a n s ic 0 b o l x 3 2 3 1 9 7 4 文 本,把功能模块扩充到1 1 个。 3 t 9 8 5 年对c o b o l 一7 4 迸行了修正,产生了c o b o l 一8 5 ,使c o b o l 语言更 加完善。 4 2 0 0 2 年产生了c o b o l 的最新标准c o b o l 2 0 0 2 。 可以说,c o b o l 语言随着时代的进步也在一直发展着。我们可以看到,在 c o b o l 2 0 0 2 标准中,增加了许多新的特征以适应当前的软件技术发展潮流。新 增特征主要有以下几个方面:面向对象的功能:多文字处理功能;地域文化对 应功能:地址指针;异常处理:位操作功能;浮点数的操作:条件编译:和c 语言等的连接等。 新的c o b o l 2 0 0 2 就是一种面向对象的c o b o l ,其核心内容是给c o b o l 增加 1 西北_ t 业大学硕士学位论文 面向对象处理机制,其他的功能扩展都是围绕面向对象功能展开的。新的面向 对象的c o b o l 要在兼容经典c o b o l 的所有机能的同时,支持面向对象编程的元 素:类对象、方法;继承:类继承和接口继承:多重继承;属性:带参数的 类;多态;c o b o l 基类。 c o b o l 2 0 0 2 另一个最大的功能扩展是增加了指针类型,这是为了提供与其他 面向对象语言的友好性而设计的。指针包括两种:程序指针和数据指针。 有调查发现世界上目前使用的商业应用软件之中的百分之七十是用c o b o l 代码编写的,并且以每年大约五十亿行代码的速度在增长。据此,并且考虑到 程序员维护后y 2 kc o b o l 代码的需要,c o b o l 应用软件仍然有存在的必要。 c o b o l 代码在商业软件所占的巨大比例,以及快速的增长速度都决定了在 短时间内用别的程序语言开发取代c o b o l 是不可能的。企业都会在考虑成本的 情况下都希望在原有基础上维护这些c o b o l 应用程序。 1 2 研究的意义 c o b o l 语言在当前的软件开发与维护中占有极其重要的地位。它在商业软件 中所占的极大比例以及从事c o b o l 软件开发人员的庞大队伍,都将c o b o l 语言 推向了极其重要的地位。因此,针对c o b o l 语言的集成开发环境也就是很有必 要的,它们可以在很大的程度上方便程序员的开发工作。事实上,现在许多大 型的公司都推出了自己的c o b o l 程序集成开发环境,在实践中得到了具体的应 用。 c o b o l 语言的应用平台十分广泛,w i n d o w s 、h p - u n i x 、s o l a r i s 、l i f l u x 等 平台都有大量的c o b o l 应用程序。本课题所研究的c o b o l 集成开发环境就是要 实现在h p u n i x 服务器上开发c o b o l 程序。通常来说,一个项目有很多程序员 组成,但实际上根本不可能为每一位程序员提供一台t t p - u n i x 服务器供其进行 开发工作。所以,为了实现多成员在h p u n i x 上的远程共同开发,一个具有c s 架构的集成开发环境是很有必要的,其基本的思想就是将整个开发环境分为服 务器端和客户端两个部分。其中,服务器端模块运行在h p u n i x 服务器上,客 户端模块运行在w i n d o w s 平台上,二者之间通过t c p i p 协议通信。这样,程序 员,尤其是w i n d o w s 程序员,就可以在熟悉而友好的w i n d o w s 用户环境下开发 h p u n i x 服务器上的c o b o l 应用程序,从面无需投入额外精力进行u n i x 环境的 学习。 这个集成开发环境完全支持c o b o l 2 0 0 2 语言标准,支持程序员开发面向对 象的c o b o l 程序,这与当前的软件发展潮流相吻合,可以促进c o b o l 语言的进 西北工业大学硕上学位论文 一步发展与应用。 1 3 研究工作概述 c o b o l 语言集成开发环境具有客户端和服务器端两部分。其中,客户端在 p c 机的w i n d o w s 平台上,它具有一个图形开发界面,并通过底层通信模块与服 务器端通信;而服务器端在h p u n i x 上,包含了各个核心功能模块:编译、调 试、文件管理和认证。通过这样的系统,开发人员就可以在w i n d o w s 平台上远 程开发u n i x 服务器上的c o b o l 程序。 笔者参与了服务器端框架结构和通信协议的设计工作,并在深入研究进程 问通信理论的基础上,提出了文件管理和调试器的实现方案。 1 - 4 本文组织结构 本论文是按照作者承担的主要研究和开发工作来安排的,共分为6 章,每 一章的主要内容如下所示: 第1 章,绪论。本章简要介绍了本文的研究背景和意义、研究工作内容以 及论文内容的安排。 第2 章,c o b o l 语言新开发环境系统概述。本章介绍了c o b o l 语言新开发 环境的系统概要设计,提出了它的总体框架和软硬件环境,并简要介绍了 服务器端和客户端的结构。 第3 章,服务器端主框架设计与实现。本章介绍了服务器主框架设计及通 信协议设计。 第4 章,文件管理设计与实现。本章介绍了多用户文件管理的设计及主要 实现技术。 第5 章,调试器机制设计与实现。本章介绍了调试器机能的实现机制。 第6 章,结束语。本章总结了全文的主要工作,并展望了后续的研究工作, 指出了进一步的研究内容。 西北工业大学硕士学位论文 第2 章c o b o l 2 0 0 2 集成开发环境概述 本章概要介绍了c o b o l 2 0 0 2 集成开发环境的整体结构,包括系统的硬件及 软件体系结构,服务器端和客户端的功能结构等。 2 。l主框架结构 c o b o l 2 0 0 2 集成开发环境是跨u n i x 和w i n d o w s 平台的c o b o l 语言开发系统。 它采用传统的c s 结构,具有客户端和服务器端两部分。其中,客户端在p c 机 的w i n d o w s 平台上,为用户提供一个图形开发界面,并通过底层通信模块与服 务器端通信;而服务器端在t f p u n i x 上,包含了各个核心功能模块:编译、调 试、文件管理和认证。通过客户端和服务器端的网络通信,开发人员就可以在 w i n d o w s 平台上远程开发u n i x 服务器上的c o b o l 程序。 图2 1 一l 是硬件体系结构图。服务器为h p u x ,c o b o l 2 0 0 2 的编译器放在 该机器上:p c 机上运行客户端应用程序w o r k b e n c h ,与服务器通过s o c k e t 进行 通讯。 图2 卜l 硬件体系结构图 图2 i 一2 是c o b 0 1 2 0 0 2 集成开发环境的软件体系结构示意图。h p u x 月务 器启动时,同时启动服务器端的服务进程。该进程针对每个客户进程可以启动 两个线程提供服务。一个是服务线程提供文件管理、编译等服务,另一个是调 4 西北工业大学硕士学位论文 试线程专门用来提供调试服务,这两个线程通过两个s o c k e t 与客户端进行通 信。 图2 卜2 软件体系结构图 2 2服务器端结构 服务器侧运行一个服务进程作为一个服务存在,客户端的w o r k b e n c h 向服 务器指定端口发送连接请求,服务器侧服务进程接收请求、认证后,向客户端 提供相应的服务。 服务进程为每个客户端进程启动一个服务线程,服务线程与各客户端 w o r k b e n c h 通过s o c k e t 通信。服务线程提供的服务包括认证、文件管理、版管 理、编译、环境变量设置等。 如果需要调试,服务进程为每个客户端进程启动一个调试线程,调试线程 与各客户端w o r k b e n c h 通过s o c k e t 通信。 以下是对服务器端各个机能模块的概要说明: 1 ) 认证模块:该模块负责检验登入用户的合法性。服务进程负责接受客户 的连接请求,建立服务线程。服务线程首先调用认证模块,进行认证, 认证通过则继续,否则,断开连接。 2 ) 文件管理模块:该模块负责文件命令的解析,处理文件传送、排他控制 等功能。内码转换作为文件传送的一部分功能,也可以提供简单的版管 理功能。 3 ) 版管理模块:该模块负责c o b o l 工程的版本管理。当用户使用版管理软 件时,版管理的机能由版管理软件提供。这些版管理软件有:r c s 、c v s 西北工业大学硕士学位论文 等。 4 ) 编译模块:该模块负责完成c o b o l 程序的编译。 j ) 调试模块:该模块负责解析出具体的调试命令发送给w d b 调试器。将凋 试的执行结果发送给客户端。 在下一章中我们将对服务器端整体结构设计进行详细的说明。 2 3 客户端结构 客户端的用户开发环境称作w o r k b e n c h 。w o r k b e n c h 的结构类似于v c ,主 要功能包括:框架窗口( f r a m e w o r k ) 、编辑器、工程管理器、类视图( c i a s s v i e w e r ) 、数据名窗口、调试器( d e b u g g e r ) 、执行以及通信机能等。程序员通过 在该用户界面的操作,就可以实现在h p u n i x 服务器上开发c o b o l 程序:c o b o l 源程序的编辑、编译、执行和调试。 由于笔者主要参与的是服务器端的结构设计,在这里就不对客户端结构进 行详细的说明了。 6 西北丁业大学硕士学位论文 第3 章服务器端结构设计 本章详细说明了服务器端的整体设计,包括整体结构、以及三个基本组成 部分:服务进程、服务线程和调试线程。另外,为了以后各章节说明的清晰性, 本章还介绍了服务器端与客户端通信协议的设计。 3 1整体结构设计 通过上一章的介绍,我们已经了解c o b o l 2 0 0 2 开发环境采用的是典型的c s 结构,客户端在p c 机的w i n d o w s 平台上,而服务器端在h p u n i x 平台上。服务 器端所要完成的主要功能就是随时监听和捕捉客户端的请求,然后根据请求的 类别进行相应的处理,并将处理结果返回给客户端。按照自顶向下的设计原则, 服务器侧整体结构的设计方案如下: 1 ) 创建服务进程监听客户请求 服务进程在服务器端以服务的形式存在。它统一管理s e r v e r 侧开启的 所有线程。服务进程的功能主要包含两大方面:监听客户端的连接请求; 根据客户端的请求创建服务线程或调试线程与客户端直接进行通信,并为 其提供相应服务。 2 ) 创建服务线程和调试线程为每个客户请求提供服务 服务进程为每个客户端进程启动一个服务线程,服务线程与各客户端 w o r k b e n c h 通过s o c k e t 通信。服务线程提供的服务包括认证、文件管理、 版管理、编译、环境变量设置等。 另外,针对客户端的调试请求,服务进程特别创建调试线程,它同样与 各客户端w o r k b e n c h 通过s o c k e t 通信。调试线程处理与调试有关的命令, 并将调试结果返回给客户。 服务线程和调试线程分别根据客户请求类型,调用相应的机能模块提供 服务,服务器端的机能模块包括:认证、文件管理、版管理、编译、调试 等。 以下是对服务器端各个功能模块的概要说明: 认证模块:服务进程接受客户的连接请求建立服务线程后,服务线 程首先调用认证模块,进行认证,认证通过则继续,否则,断开连接。 文件管理模块:该模块负责文件命令的解析,处理文件传送、排他 西北工业大学硕士学位论文 控制等功能。内码转换作为文件传送的一部分功能,也可以提供简靼 的版管理功能。 版管理模块:当用户使用版管理软件时,版管理的机能由版管理软 件提供。这些版管理软件有:r c s 、c v s 等。 编译模块:服务线程调用编译模块,完成c o b o l 工程的编译。 调试模块:该模块负责调试工作。它解析出具体的调试命令发送给 w d b 调试器,并将调试的执行结果发送给客户端。 下图就是服务器侧模块的结构图。 图3 卜l 服务器侧模块构成图 西北工业大学硕士学位论文 3 2通信协议 客户端与服务器端要频繁的传输数据,为了使传输的数据在使用时不引起 混淆,必须使用通用的数据格式,因此必须设计一种二者都遵循的命令传输协 议( c o m m a n dt r a n s f e rp r o t o c o l ,c t p ) 。在每个数据包中都有一个独立的域记 录数据包的版本信息,在解析数据包时要检查包的版本号是否相符。客户端模 块与服务器端进行s o c k e t 通信时,传输内容和过程就要按照该通信协议格式进 行。该协议的基本作用就是使服务器侧明确本次通信中客户端请求进行何种操 作,或者让客户端w b 本体明确服务器侧传回的是那一条命令的响应结果。 3 2 1 数据包 一个数据包分为两部分:数据包头h e a d 和数据d a t a ,一个数据包的大小固 定i 0 0 0 字节,包头h e a d 长度固定2 0 字节。h e a d 由5 部分组成:v e r s i o n 域、 c o d e 域、s i z e 域、s t a t u s 域、r e s e r v e d 域,如下表所示 c o d e s t a t u s c s f l a g r e s e r v e d d a t a 4 5 7 9 1 1 2 0 1 0 0 0 表3 2 - l 数据包示意表 v e r s i o n 域:长度4 个字节,记录数据包的版本号; c o d e 域:长度1 个字节,记录数据包的类型,按照数据包的性质分类,有 1 2 种数据包,详细定义清参见下一节; s i z e 域:长度2 个字节,记录d a t a 的有效长度; s t a t u s 域:长度2 个字节,记录数据包的状态; c s f l a g 域:长度2 个字节,标识数据包的传输方向,是下行还是上行; r e s e r v e d 域:长度1 1 个字节,预留,各以后扩充。 d a t a 域:数据包本体,填充纯粹的数据或如下的信息结构( 详细定义请参见 下一节) : 结构c m d f o r m a t 定义了命令的内容格式,相关信息:命令 9 西北工业大学颂十学位论文 i d ( c m d k i n d ) 、参数大小( w h o l e s i z e ) 等。 结构a r g o f f t r a n s 定义了传输文件时的相关信息:文件长度 ( w h o l e s i z e ) ,文件名长度( s z f n a m e ) 等。 结构a r g o f t r 定义了结果数据包的信息:产生结果的任务i d ( j o b d ) 命令i d ( e m d i d ) ,结果的长度( s z r e s u l t ) ,结果类型( r e s u l t ) 与 结果码( r e s u l t g o d e ) 等。 结构r e s u l t a r g f i l e i n f o 定义的是结果文件的相关信息,即若结果 是文件( 或目录) ,则此结构定义它的信息。 3 2 2 核心数据结构 1 数据包的类型( c o d e 域) : # d e f i n ep a c k e t d e b u g _ e s s a g e 标识下面要传输的是调试命令 # d e f i n ep a c k e tc o m p i l e e s s a g e 0 标识下面要传输的是编译命令 # d e f i n ep a c k e t a u t h e n t i c a t eu 标识下面要传输的是认证命令 # d e f i n e p a c k e t s f lf i l e _ m a n a g e s 标识下面要传输的是文件管理命 令 # d e f i n ep a c k e t o u t v e r s i o n _ m a n a g e v 标识下面要传输的是外部版管 理命令 # d e f i n ep a c k e t e n v i r o n m e n t e 标识下面要传输的是环境设置命令 # d e f i n ep a c k e t - c o n t r o lc o m m a n d c 标识要传输的是命令 # d e f in e p a c k e t c o n t r o l _ f t r a n s f 标识要传输的是文件 # d e f i n ep a c k e t _ c o n t r o l a b o r ta 标识下面要传输的是异常 # d e f in ep a c k e t s o n t r o l _ t e r m i n a t e t 标识是终止命令 # d e f i n ep a c k e t d a t ad 标识要传输的是数据类型 # d e f i n ep a c k e t j o b r e s u l t j 标识下面要传输的是结果类型 2 结构体定义( d a t a 域) : s t r u c tc m d f o r m a t 命令的内容格式 u n s i g n e dl o n gj o b i d :任务i d u n s i g n e d l o n gc m d i d :命令i d c h a r o r i g c m d i d : c h a r r e s s t a t : c h a r a r g k i n d : 1 n 西北工业大学硕十学位论文 u n s i g n e dl o n gw h o l e s i z e :要传输的命令参数的大小 s t r u c ta r g o f f t r a n s文件传输参数包格式 f u f i s i g n e dl o n gj o b i d : u n s i g n e dl o n gw h o l e s i z e : u n s i g n e dl o n gb b a c k u p : : st r u c ta r g o f j r u n s i g n e dl o n gj o b l d : u n s l g n e dl o n gc m d i d u n s i g n e dl o n gs t a t u s 作业结果参数包格式 任务i d 命令i d u n s 1 g n e dl o n ge n d s t a t u s : u n s l g n e dl o n gr e s u l t : u n s l g n e dl o n gr e s u l t c o d e : u n s i g n e dl o n gs z r e s u l t ;结果的长度 s t r u c tr e s u l t a r g f i l e i n f o结果文件的信息 u n s i g n e dl o n gr e s u l t c o d e :结果码 u n s i g n e dl o n gs i z e :文件大小 u n s i g n e dl o n gd a t e :文件更改日期 u n s i g n e dl o n ga t t r i b :文件属性 u n s i g n e dl o n gt y p e :文件类型 u n s i g n e dl o n gs z n a m e :文件名的长度 3 2 3 通信协议使用示例 现以客户端向服务器发送一个s a v e 命令( 保存文件命令) 为例,并结合控 制模块,说明数据包的传输及数据包格式的使用过程。 注:为了清晰方便的叙述,引入两个伪函数s e n d p a c k e t ( p ) ( 发送数据包d ) 与r e c v p a c k e t ( p ) ( 接收数据包p ) 。 1 1 西北工业夫学硕上学位论文 1 客户端首先调用s e n d p a c k e t ( p a ) 发送数据包p a 。p a 的v e r s i o n 域为 2 0 0 2 ,c o d e 域为s7 ( 表示文件管理) ,s i z e 是d a t a 的有效长度 即c m d f o r m a t 结构的大小+ 本次传输的文件名长度,d a t a 是c m d f o r m a t 结构+ 文件名。c m d f o r m a t 结构的c m d i d 域记录了命令i d ,此处即是s a v e 的命令i d ,w h o l e s i z e 域记录的是参数的长度,此处即是文件名长度。 s a v e 命令的参数就是要保存的文件名。 2 服务器侧调用r e c v p a e k e t ( p ) 接收到p a 后,根据c o d e = s 则调用文 件管理模块( 同时把与客户端通讯使用的s o c k e t 号与p a 传给它) ,以 后文件管理模块就直接与客户端通讯。文件管理模块可以从p a 的第2 0 字节处取出c m d f o r m a t 结构,并根据c m d f o r m a t 结构的w h o l e s i z e 域 知道文件名的长度,s i z e 减去c m d f o r m a t 结构的大小便是本次传输的 文件名的大小,再比较w h o l e s i z e 与本次传输的文件名大小就可判断 是否文件名已经完全传输过来,即命令的参数是否完全传输过来。若 参数没有完全传输过来则继续接收客户端传输的参数信息,此时客户 端传输的数据包的本体即是剩余的参数内容,此时数据包的c o d e 域是 d ,表明是数据信息。 3 客户端调用s e n d p a c k e t ( p ) 发送数据包p b ,c o d e = f ,d a t a 是 a r g o f f t r a n s 结构类型,a r g o f f t r a n s 结构的w h o l e s i z e 记录的是文件 的长度。 4 服务器侧的文件管理模块接收到a r g o f f t r a n s 结构。 5 客户端调用s e n d p a c k e t ( p ) 发送数据包p c ,p c 的c o d e 域为d ,d a t a 是文件内容,s i z e 是d a t a 的大小,即本次发送的文件内容的大小。 6 服务器侧文件管理模块接收到p c ,c o d e = d ,此处c o d e = d 表明 发送的是数据( 即文件内容) ,比较a r g o f f t r a n s 结构的w h o l e s i z e 与 s i z e 的累加和判断是否已把文件的内容全部收到。 7 文件管理模块处理完毕s a v e 命令后,返回,服务线程又去接收另一个 命令。 3 。3服务进程 3 3 1 服务进程的功能 服务器测的服务进程作为一个服务在服务器端存在。客户端的w o r k b e n c h 西北工业大学硕上学位论文 向服务器指定端口发送连接请求,服务进程接收请求、认证后,向客户端提供 相应的服务,如文件管理、编译、调试等。 服务进程控制服务器端的总流程。它不直接与用户交互,只是作为一个独 立的守护进程始终在后台运行,并统一管理服务器端开启的所有线程。总体来 说它主要有三个作用:监听客户端的连接、创建服务线程( 对应客户端的所有 的非调试服务) 、创建调试线程( 对应客户端的所有的调试服务) 。 3 3 2 服务进程的实现 h p u x 服务器启动时,同时启动服务器端的服务进程。该进程针对每个客 户进程可以启动两个线程提供服务。一个是服务线程提供文件管理、编译等服 务,另一个是调试线程专门用来提供调试服务,这两个线程通过两个s o c k e t 与 客户端进行通信。服务进程监听来自客户端的请求,如果有请求,对每个客户 进程首先启动对应的服务线程,服务线程调用认证模块进行认证。然后根据命 令的类型提供相应的服务。 实现服务进程最关键的技术就是要将其做成守护进程,在后台运行,并随 时监听客户端w o r k b e n c h 的连接请求。有关守护进程的理论,请参阅下一节的 说明。 服务进程启动后,首先对数据结构f c t ( f i l ec o n t r o lt a b l e ,文件控制 表,在第4 章有详细说明) 等进行初始化。同时,该进程需要创建一个监听 s o c k e t ,一直对指定端口进行监听。当监听到有客户端的请求时,就接收该连 接请求,然后获得请求类型,如果调试请求,则创建调试线程。如果是非调试请 求,则刨建服务线程。创建完线程后,服务进程继续监听下一个客户的请求。 流程图如下所示: 西北工业人学硕上学位论文 系统初始化 i l i s t e n o i j 丁 阻塞直至收到来自 客户的连接请求 l 衄e p t oi t r e c v ( ) 取出请求类型值 人 尜! 乡q n 创建一个调试线程创建一个服务线程 i i 图3 3 - 1 服务进程流程削 流程描述如下: 启动了该服务进程后,首先对系统进行初始化操作,例如对数据结构f c t 初始化等。 监听请求( 1 i s t e n ( ) ) ,监听客户进程的连接请求。 当有客户连接时,建立连接。 根据接收请求类型的值的不同,创建服务线程或调试线程。 服务进程继续监听其他客户的连接请求。 3 3 3 守护进程 3 3 3 1 守护进程的功能 守护进程是生存期长的一种进程,通常在系统引导装入时启动,在系统关 闭时终止。它们没有控制终端,在后台周期性的执行某种任务或等待处理某些 1 4 西北_ 业人学顾士学位论文 发生的事件。上述的服务进程即是作为守护进程存在,等待客户端的连接认证 请求并处理客户端的服务请求。 守护进程最重要的特性是没有控制终端,在后台运行;守护进程必须与其 运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话 和进程组、工作目录以及文件创建掩码等。这些环境通常是守护进程从它的父 进程中继承下来的:所有的守护进程都以超级用户( 用户i d 为0 ) 的优先权运 行。 除了以上特殊特性以外,守护进程与普通进程基本没有什么区别。实现服 务器侧控制模块的服务实际上就是把普通服务进程按照守护进程的特性改造为 守护进程。 3 3 3 2 守护进程的实现 将服务进程做成为守护进程( d a e m o n ) 需要通过以下方式实现: 在后台运行 为避免挂起控制终端,要将d a e m o n 放入后台执行。调用f o r k 然后使父进 程终止,让d a e m o n 在子进程中后台执行: i f ( p i d = f o r k 0 ) e x i t ( 0 ) :结束父进程,子进程继续 子进程继承了父进程的进程组i d ,但具有一个新的进程i d ,这就保证了子进程 不是一个进程组的首进程,这是下面调用s e t s i d 的必要前提。 脱离控制终端,登录会话和进程组 控制终端,登录会话和进程组通常是从父进程继承下来的,要脱离它们的 方法是在前面的基础上,调用s e t s i d 0 以创建一个新的会话期。使调用进程成 为新的会话期的首进程,成为一个进程组的首进程,没有控制终端。 禁止重新打开控制终端 进程成为无终端的会话期的首进程,但它可以重新申请打开一个控制终端。可 以通过使该进程不再成为会话期的首进程来禁止进程重新打开控制终端: i f ( d i d = f o r k 0 ) e x i t ( 0 ) :结束第一子进程,第二子进程继续( 该进程不再成为会话期自勺首 迸程) 关闭打开的文件描述符 进程从创建它的父进程那里继承了打开的文件描述符。如果不关闭,将会 西北工业大学硕士学位论文 浪费系统资源,造成进程所在的文件系统无法卸下以及引起无法预料的错误。 宏o p e nm a x 决定最高文件描述父的值,根据需要可以按照如下方法关闭所有描 述符: f o r ( i = o :i o p e nm a x ;+ + ) c l o s e ( i ) : 改变当前工作目录 从父进程继承过来的当前工作目录( c u r r e n tw o r k i n gd i r e c t o r y ) 可能在 一个文件系统中,这个文件系统不能被卸下。需要用c h d i r 将工作目录改变到 指定的位置。 重新设置文件创建掩码 进程从创建它的父进程那里继承了文件创建掩码。这些掩码可能会拒绝设 置某些许可权。为此,需要将文件创建掩码清除:u m a s k ( 0 ) 。 3 3 3 3 守护进程的错误输出 守护进程不属于任何终端,所以当需要输出某些信息时,它无法象一般程 序那样将信息直接输出到标准输出和标准错误输出中。也不希望每个守护进程 将它自己的出错消息写到一个单独的记录文件中。因为对系统管理员而言,要 记住哪一个守护进程写到哪一个记录文件中将很麻烦。所以需要一个集中的守 护进程出错记录机制。大多数用户进程( 守护进程) 调用s y s l o g 函数以产生记 录消息,在这个守护进程中也采用这种机制产生记录消息。 s y s l o g d 守护进程读取三种格式的记录消息。此守护进程在启动时读取一 个配置文件。一般,文件名为e t c s y s l o g c o n f ,该文件决定了不同种类的消 息应该送往何处。该机制提供了s y s l o g 函数,调用格式如下: # i n c l u d e v o i do p e n l o g ( c h a r * i d e n t ,i n to p t o n ,i n tf a c i l i t y ) : v o i ds y s l o g ( i n tp r i o r i t y ,c h a r f o r m a t ,) : v o i dc l o s e ( ) : 调用o p e n l o g 是可选择的。如果不调用o p e n l o g ,则在第一次调用s y s l o g 时, 自动调用o p e n l o g 。调用c l o s e l o g 也是可选择的,它只是关闭被用于与s y s l o g 守护进程通信的描述符。 西北工业大学硕士学位论文 3 4服务线程 3 4 1 服务线程的功能说明 服务线程由服务进程创建,处理所有与调试无关的命令,并负责将操作结 果返回给客户。服务线程将客户端传输过来的数据包按照协议格式进行拆封, 分析出客户请求进行什么操作,如编译,文件管理、版管理等,然后再调用相 应的功能模块执行操作,将结果传给客户端。 3 4 2 服务线程的设计与实现 服务进程接受客户端的连接请求后,获得一个s o c k e t 号,然后在创建服务 线程的时候,将这个s o c k e t 号作为参数传给该线程。服务线程使用这个s o c k e t 号与客户端直接进行通信:接收客户端的请求命令,然后调用相应功能模块执 行操作,最后将执行结果传回给客户端。 服务线程的职责分

温馨提示

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

评论

0/150

提交评论