(计算机应用技术专业论文)机房计算机管理系统的设计与实现.pdf_第1页
(计算机应用技术专业论文)机房计算机管理系统的设计与实现.pdf_第2页
(计算机应用技术专业论文)机房计算机管理系统的设计与实现.pdf_第3页
(计算机应用技术专业论文)机房计算机管理系统的设计与实现.pdf_第4页
(计算机应用技术专业论文)机房计算机管理系统的设计与实现.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机应用技术专业论文)机房计算机管理系统的设计与实现.pdf.pdf 免费下载

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

文档简介

硕士学位论文 m a s ,i e r s ll e s i s 摘要 计算机技术和网络通信技术的发展,使人类社会进入信息时代成为可能。 可目前,绝大多数计算机实验室仍处于原始的人工管理阶段,这不但与计算 机科学的发展极不协调,而且也浪费了大量的人力和物力。因此开发一个机 房计算机管理系统,用更科学、更先进的管理方法来替代原来的人工管理, 已成为当前机房管理中个迫切需要解决的问题。 本文是以作者参加洛阳师范学院的“机房计算机管理系统”开发项目为 基础完成的。作者作为项目的主要开发设计人员之一,在工作中采用了面向 对象的分析设计方法,用v i s u a lc + + 6 0 进行了编码基本实现了项目的预定 目标。该系统在实际运行中体现了安全、操作简单、运行效率商、易维护等 特点。 计算机用于机房的管理是实现机房管理自动化的目标。根据网络和数据 库管理系统的基本原理本文针对手工管理的不足,提出了机房计算机管理 系统的分析和设计思路。论文分析了系统的总体结构、各模块的详细设计、 以及系统设计和实现时需要考虑的有关问题和涉及的相关技术,系统地阐述 了实现机房信息化管理的设计思想、方法以及过程,并详细分析了服务器和 学生客户端主要模块。 系统采用v i s u a lc + + 6 0 开发工具,利用其提供的各种面向对象的开发 工具首先在短时间内建立系统应用原型。然后对初始原型进行需求迭代, 不断修正和改进,直到形成用户满意的可行系统。 本文最后总结了本系统的特点,并结合系统的不足提出了一系列的改进、 扩充方案,并提出进一步的研究方向。 关键词: c s 结构,s o c k e t 类对象,o d b c a b s t r a c t t h ed e v e l o p m e n to ft h ec o m p u t e rt e c h n o l o g ya n dn e t w o r kc o m m u n i c a t i o n t e c h n o l o g ym a k e si tp o s s i b l ef o rh u m a n ss o c i e t yt oe n t e ra l l e r ao fi n f o r m a t i o n b u tn o w a d a y s ,m o s to ft h ec o m p u t e rl a b o r a t o r ya r es t i l li nt h ep r i m i t i v es t a g eo f m a n u a l m a n a g e m e n t t h i sn o to n l y i se x t r e m e l yi n c o n s i s t e n tw i t ht h ed e v e l o p m e n t o f c o m p u t e rs c i e n c e ,b u ta l s ow a s t e sm u c ho f m a n p o w e r a n dm a t e r i a lr e s o u r c e s s o i th a sb e e na n e m e r g e n tq u e s t i o nf o rc o m p u t e rl a b o r a t o r ym a n a g e m e n t t od e v e l o p a “c o m p u t e rl a b o r a t o r yc o m p u t e rm a n a g e m e n ts y s t e m a n d u s ei t r e p l a c i n g p r i m a r y m a n u a lm a n a g e m e n t t h i st h e s i si sb a s e do nt h e p r o j e c t “c o m p u t e rl a b o r a t o r yc o m p u t e r m a n a g e m e n ts y s t e m ”o f l u oy a n gn o r m a lc o l l a g et h a tt h ea u t h o rj o i n e d i nt h i s p r o j e c t ,t h ea u t h o rr e a l i z e dt h eg o a l so n t h ew h o l ea so n eo ft h em a j o rd e s i n e r sb y o o a ( o b j e c to r i e n t e da n a l y s i s ) ,o o d ( o b j e c to r i e n t e dd e s i g n ) ,a n dc o d i n gb y v i s u a lc + + 6 0 t h es y s t e mh a se m b o d i e dt h ef o l l o w i n gc h a r a c t e r s :s a f e ,s i m p l et o c o n t r o l ,e f f i c i e n ti nr u n n i n ga n de a s y t om a i n t a i n r e a l i z i n gc o m p u t e rl a b o r a t o r ya u t o m a n a g e m e n tb yc o m p u t e ri st h eg o a lo f c o m p u t e rl a b o r a t o r ym o d e m i z a t i o n a c c o r d i n gt ot h et h e o r i e so f n e t w o r ka n d d a t a b a s em a n a g e m e n t ,t h ea u t h o rf i r s t l ya n a l y z e dt h ed e f e c to ft h e m a n u a lm a n a g e m e n t ,t h e ng a v eo u t a n a l y s i sa n dd e s i g nt h o u g h t so f “c o m p u t e rl a b o r a t o r yc o m p u t e rm a n a g e m e n ts y s t e m ”, i n t r o d u c e d s y s t e m a t i c a l l yt h ed e s i g ni d e a s ,d e s i g nm e t h o d s ,a n dt h ep r o c e d u r eo f r e a l i z i n gc o m p u t e rl a b o r a t o r yi n f o r m a t i o na u t o m a n a g e m e n t a sw e l la s t h ea u t h o ra n a l y z e dt h ef u n c t i o no fm a i nm o d u l e so ft h es e r v i c ea n d t h es t u d e n tc ll e n t b yl o o k i n gu pl o t so fd a t u m is e l e c t e dv i s u a lc + + 6 0b e c a u s eo f i t so b j e c t i v et o o l si nw i n 3 2 i tc a ng i v ey o uas h o t c u tt ob u i l du p ap r o t o t y p eo fs y s t e ma p p l i c a t i o n t h ep r o t o t y p ec o u l db em o d i f l e da n d d e v e l o p e dt i l lu s e r sa r es a t i s f i e dw i t hi t n 硕士学位论文 m a s ,i e r s l e s i s i nt h ee n do ft h et h e s i s ,t h ea u t h o rs u m m a r i z e dt h es t r o n g p o i n t o ft h es y s t e m p o i n to u tt h ep r o b l e m st h a tn e e db e t t e r m e n ta n de x t e n s i o n a n dg i v eo u taf a r t h e rr e s e a r c hd i r e c t i o n k e y w o r d s : c ss t r u c t u r e ,s o c k e t ,c l a s s ,o b j e c t ,o d b c 硕士擘位玲文 m s t e r si l 出s 始 郑重声明 本人的学位论文是在导师指导下撰写的,学位论文没有剽窃、 抄袭、造假等违反学术道德、学术规范和侵权行为,本人愿意承担 由此而产生的法律责任和法律后果,特此郑重声明。 学位论文作者( 签名) 害p 五嘭年厂月z 绐 硕士学位论文 m a s ,i e r s ll e s i s 第一章概述 1 1 问题的提出及其意义 随着计算机科学技术和网络通讯技术的迅猛发展,计算机性能的逐渐增 强,价格的逐渐降低,使得越来越多的中、小学都拥有了自己的多媒体机房, 城市中的网吧更是随处可见、比比皆是。这些机房和网吧中的计算机少则有 几十台,多则上百台。另外随着近几年我国高等院校的大规模扩招,我国的 在校大学生人数在迅速地膨胀,各大专院校的计算机实验室也在不断地扩大, 一般院校的一个计算机实验室少则几百台,多则上千台计算机。这使得如何 管理好这些计算机成为一个比较伤脑筋的问题。目前,绝大多数机房和网吧 还处于原始的人工管理阶段,而且大部分机房为了提高资源的利用率,都在 业余时间对学生开放,这都为机房的管理增加了难度,此外人工管理还存在 着些不可避免的缺陷。如:该下课的学生拖堂,影响下一批学生上机。少 数学生有意或无意地破坏机器。检查学生的机器使用记录要耗费管理人员的 大量时间。业余开放时,登记学生上、下机时间和收费也要浪费大量的人力 资源。上述种种现象都说明,开发一个既能保证学生上机方便又有利于机房 管理的、。比较实尉盼机痨管理系统,以提高机房的管理效率和管理质量,降 低管理人员的劳动强度,节约大量的人力资源势在必行。 1 2 现有系统的局限性 目前,国内的一些公司开发了不少机房管理系统。但是令人遗憾的是绝 大多数的机房管理系统,不是操作繁琐不易维护就是安全性不高,要不技 术含量低使用一段时间后,大多都能被水平较高的学生绕过去,造成逃费 现象。当前机房计费管理系统主要分三类:纯硬件产品,即每台计算机上 加2 块控制卡和。个i c 卡读卡机。纯软件产品,没有任何硬件和软件,仅仅 靠学生端登录来计费。第三种就是软件和硬件结合的产品,在机房入口处或 者楼层入口处放置若干台刷卡机。 硕士学位论文 h a s ,i e r s l 【e s i s 据调查和询问,纯硬件产品问题比较多。现在使用纯硬件产品的学校, 大多数苦不可言。读卡机和i c 卡总是出莫名的错误,非常麻烦,多次造成教 学事故。每天的维护量太大。因为正常的上课时间也需要学生插卡,所以有 时影响学生的正常上课。另外,纯硬件产品的前期安装费用和后期维护费用 菲常高。每台计算机都需要安装一台读写器。因为质量好的读写器一般价格 较高,而纯硬件产品开发商为了降低成本,所以选取的是质量比较差的产品, 这样读写器的寿命不会太长。经调查,一般为0 5 2 年,甚至更短。这样, 后期的维护投资非常大。另外。从管理的角度上考虑,纯硬件产品的维护也 要耗费大量的人力资源。 纯软件产品的安全性太差。现在从网上可以下载到免费的纯软件机房管 理系统,经试用,非常容易逃费。有些纯软件产品,下机时还要学生操作, 软件隐藏性不好。还有一些产品,如果死机还要请管理人员注销,使用起来 不是太方便。 软硬结合的产品,一般在机房或者入口处设刷卡机,每台计算机的管理, 通过软件来实现。收费通过硬件来收取,而管理通过软件来管理。因为要使 用刷卡机使得它的价格也比较高,另外使用起来也比较麻烦。 1 3 全文概要 本文的主要内容如下: 第一章对当前机房管理中存在的问题及发展趋势进行了分析,指出了研 究本课题的意义所在。 第二章介绍了机房计算机管理系统设计的主要思想和设计系统时应考虑 的问题,对系统的主要模块进行了划分,详细论述了c s 模式的特点。并对 开发工具进行了比较选择。 第三章阐述了使用s o c k e t 进行网络通信的原理,并给出了系统的s o c k e t 接口通信模型。 第四章详细分析了o d b c 数据库访问技术,讨论了使用m f c 的o d b c 类对 系统的数据进行访问的方法。 第五章介绍了统一建模语言u m l ,并使用u m l 对系统进行建模。 2 硕士学位论文 m a s ,i e r s ll e s s 第六章是系统的详细设计部分,使用面向对象的设计方法对系统进行了 总体设计,给出了系统的功能结构图。并对系统的数据库进行了设计。 第七章是系统的实现部分,本文以服务器和客户端主要函数据的实现为 例,给出了本系统用v c 6 0 的实现代码和流程图。 第八章总结了全文的特点并结合本系统的不足提出了一系列的改进、 扩充方案,并提出了下一步的研究方向。 1 4 本章小结 二十一世纪是信息化、网络化的时代,在人们的生产劳动中用自动化、 网络化管理代替原始的人工管理。来提高劳动效率、降低劳动强度、节约大 量的人力、物力、财力资源是一个不可阻挡的趋势。因此,开发机房计算机 管理系统,实现机房的信息化、网络化管理有着美好的前景。 硕士学位论文 m a s ,i e r s ll e s i s 第二章系统设计思想 机房计算机管理系统主要应用于大、中、小学的机房和网吧,实现机房 的信息化、网络化管理。所以系统的开发必须遵循安全可靠、稳定、维护性 好等原则,以便于系统既能满足目前的需要,又能适应将来扩展的需要。 2 1 系统需求分析 为了使我们设计的系统能很好地满足机房管理的需要,以下几个问题是 必须考虑的w 。 l 、安全 机房计算机管理系统不仅仅是一个一般的管理系统,它是一个集信息管 理、网络控制和财务管理于一身的综合管理系统。这其中最重要的还是财务 管理方面。因为一般机房都在业余时间对外收费开放,所以在设计机房管理 系统时,我们把安全性作为首要考虑因素。一旦系统的安全性遭到破坏,记 账功能遭到袭击,则后果不堪设想。 系统的安全性。7 包括系统本身的安全和数据的安全。系统必须既能够防止 恶意的侵扰,又能防止因误操作引起的数据错误。在本系统中安全主要包括 以下五个方面: ( 1 ) 如何防止学生绕过客户端的登录界面。因为学生一旦绕过登录界面, 就会造成逃费现象的发生这样就不能对收费上机的学生进行正常的收费, 也不能对学生进行有效地控制和管理,整个系统形同虚设。 ( 2 ) 如何防止学生正常登录以后拔掉网线。若学生登录后再拔掉网线, 则客户端和服务器豹连接就会断开,这样管理人员同样不能对学生进行管理, 也不能对收费上机的学生进行收费,造成和绕过登录界面同样的后果。 ( 3 ) 如何防止个别学生或其它人员对系统的恶意攻击。如果服务器遭到 恶意攻击,造成服务器数据的丢失或系统的瘫痪,则不但给实验室带来巨大 的经济损失而且还会影响到正常的实验课上课工作,给实验教学带来严重 恶果。 硕士学位论文 m s ,i e r s l 【e s i s ( 4 ) 网络传输中数据的安全。因为实验室人员对机房和学生的管理以及 对学生的收费都是通过网络来进行的,所以网络中数据传输的安全就显得非 常重要了。一旦网络中的数据被截或并修改,则整个系统的功能就会紊乱, 严重的会造成系统的瘫痪带来的后果不可预测。 ( 5 ) 数据库的安全。数据库中记录着整个系统正常运行时的所有数据, 包括学生的收费信息、上机记录、机房中每台计算机的信息、学生和管理员 的信息等。这些信息都是系统正常运行的保证。因此必须要保证这些信息的 绝对安全。 2 系统速度 系统速度主要包括学生登录的速度、控制消息传输的速度、学生用机的 上网速度以及服务器对各种消息的响应速度。系统速度的快慢对系统的性能 有很大的影响。如果使用了机房计算机管理系统后,造成学生上机速度缓慢 或控制信息响应很慢,则本系统就失去了它的实用意义。 3 、网络延时 上面讲过,机房计算机管理系统中管理人员对机房的管理是通过远程控 制来实现的。远程控制“”就是将被控制对象与控制器在地理位置上进行分 离,采用一定的通信手段来实现控制信息和反馈信息的传输。我们的机房 计算机管理系统是基于i n t e r n e t 的远程控制系统,而i n t e r n e t 的设计初衷 是为了满足资源共享,注重信息传递的准确性和传送的信息量,而非信息传 递的实时性,因此不能保证远程控制系统中运动信息的实时传递。实验表明, 在信息传递的过程中将产生较大的延时和一定的延时不确定性。这种情况很 容易造成控制信息和数据的丢失,对网络的安全和系统的速度都有很大的影 响,并严煎影响基于i n t e r n e t 远程控制的性能。因此网络延时也是本系统设 计时不能忽略的一个重要因素。 4 、合理设计数据库 本系统在开发时主要涉及两大问题:网络和数据库。而数据库是所有信 息保存的场所。它的设计是否合理直接影响到系统软件的质量影响到软件 对数据访问的速度。它是系统可以长期稳定存在的基础。建立数据库需要考 虑以下几个问题: 硕士学位论文 m a s ,i e r s l 【e s i s ( 1 ) 数据的一致性 由应用程序产生工作编码,要保证不同工作任务具有不同编码,工作编 码具有唯一性。 ( 2 ) 合理冗余 如果数据冗余低,数据的完整性容易得到保证,但增加了袭问连接查询 的操作,为了提高系统的响应时间,合理的数据冗余有时也是必要的。 ( 3 ) 合理选择数据的类型 数据类型的合理选择对于数据库的性能和操作具有很大的影响因为不 同的数据类型所占用的存储空间不样,其运算的速度也不一样,所以合理 地选择数据类型对程序的性能也有很大影响。 ( 4 ) 数据规范化存储 规范化的数据存储”1 不但有利于我们养成良好的数据库设计习惯,提高程 序的质量,而且对日后的数据库维护也有很大的益处。 5 、合理运用新技术 在开发软件过程中,如何合理运用新技术应该遵循以下三个原则: ( 1 ) 创新原则,体现先进性。计算机技术曰新月异,要及时了解新技术, 使用新技术,使目标系统较原系统有质的飞跃。 ( 2 ) 经济原则,体现实用性。大而全和高精尖并不是管理信息系统成功 与否的唯一衡量标准。事实上许多失败的软件正是由于盲目地追求高新技术 而忽视了其实用性,盲目追求完美而忽视了本单位的技术水平、管理水平和 人员素质所致。 ( 3 ) 前瞻性原则,体现发展性。为了延长系统的生命周期,有效地发挥 管理系统的作用,应当注意技术的发展方向和环境的变化趋势。 2 2 系统的总体模块划分 经反复的调查研究和论证,结合机房管理的实际情况,我们认为将机房 管理系统分为四大模块较为合适,各模块之问的结构采取c s 模型。四大模 块分别是:服务器模块、学生客户端模块、售票客户端模块和管理客户端模 块。 硕士学位论文 m a s ,i e r s li f s i s 服务器模块主要对各种客户端发来的信息进行响应,并通过对客户端信 息的分析,来进行各种事务处理。服务器具有直接访闷数据库的功能,各种 客户端对数据库的访问都是经过服务器来完成的。超级用户也可以通过对服 务器的操作来完成对各种客户端的控制。 学生客户端模块主要完成学生登录信息的验证,使得学生必须通过信息 验证才能正常使用计算机。此外它还具有学生密码的更改和余额的查询等功 能,并将学生使用计算机的信息每隔固定的时问发往服务器,让服务器进行 处理。 售票客户端模块的主要作用是将学生购买机票的信息写到服务器中。此 外还具有售票员和学生密码的更改、机时比率的设置与更改等功能。 管理客户端模块的使用对象是一般的机房管理人员,他们可以通过管理 端向服务器发送指令,服务器通过响应这些指令来完成管理人员对机房的管 理。 这四大模块之间的c s 结构模型图2 1 所示。 学生客户机售票客户机管理客户帆 圈2 i 机房计算机管理系统各模块之可的c s 结构横型 7 硕士学位论文 m a s ,i e r s l 【e s i s c s 模型可分为传统的c s 结构和三层的c s 结构”“。传统的c s 结构 就是两层的c s 结构,它的基本思想是把集中在一起的应用划分成功能不同 的两个部分,分别在不同的计算机上运行,通过它们的分工合作来实现一个 完整的功能。在这两部分中,一个为服务器程序,用来响应和提供固定的服 务:另一个为客户机程序,用来向服务器提出请求和要求某种服务。在本系 统中,服务器端运行的是服务器程序,而其它的运行的是客户机程序。 三层的c s 结构,实际上就是在客户层和服务器层之问添加一个中间层, 该中间层般用于实现企业或商业规则等。本系统的结构类似于三层的c s 结构。其中的服务器模块对管理客户端模块而言具有中间层的作用。 c s 模型具有以下特点: l 、交互性强是c s 模型固有的一个优点。在c f s 模式中,客户端有一套 完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并可以在 子程序问切换。 2 、c s 模型具有强壮的数据操纵和事务处理能力。 3 、c s 模型具有严密的数据安全性和完整性约束,提供了更安全的存取 模式。 4 、采用c s 模式将降低网络的通信量。 5 、c s 模型在内部局域网小范围内可以实现高速控制。 2 3 本章小结 本章首先分析了系统在设计时需要考虑的关键问题,然后结合系统的功 能特点对系统进行了总体模块划分,给出了系统的c s 结构,这些是我们成 功设计开发系统的前提和保证。 竺慧。 第三章通过s o c k e t 接口实现网络通信 机房计算机管理系统涉及到的两大关键技术是网络通信和数据库访问。 网络通信我们通过s o c k e t 来实现,而数据库访问采取的是o d b c 技术。本章 通过对s o c k e t 工作原理的分析,讨论了机房计算机管理系统的网络通信方案。 3 1s o c k e t 编程原理 s o c k e t 接口“”是t c p i p 中的a p i ,它实际上是网络通信的一个端点,借 助于它用户所开发的s o c k e t 应用程序可以通过网络与其它s o c k e t 应用程 序进行通信通信的基础就是s o c k e t 。 s o c k e t 也是一种文件描述符,它的数据传输是一种特殊的i o 。s o c k e t 具有一个类似于打开文件的函数调用s o c k e t 0 ,该函数返回个整型的 s o c k e t 描述符,随后的建立连接j 数据传输等操作都是通过调用该s o c k e t 实现的。其接口示意图如图3 i 所示。 甲_ 一甲 网络编程界面,例如b e r k e l e ys o c k e t 土t l 网络通信协议服务界面t c p i p l 土t i 操作系统内核 土丁 l 物理通信介质,如双绞线 圈3 1 s o e k e t 接口示意图 9 3 1 1 、利用s o c k e t 进行网络通信 为了进行网络通信,程序在网络对话的每一端都需要建立一个s o c k e t , 两个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 的特性,并使用一个a p i 函数请求网络软件给出一个标识s o c k e t 的句柄。以 下是基于c 语言实现的s o c k e t 原型。 l 、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 - h a n d l e = s o c k e t ( p r o t o c o l f a m i l y ,s o c k e t t y p e ,p r o t o c 0 1 ) : 此函数需要规定三个参数:协议簇、s o c k e t 类型和协议。协议簇参数确 定一组相关的协议,如t c p i p 协议组;s o c k e t 类型参数指明程序将s o c k e t 用于数据报传输还是字节流传输:协议参数指出程序希望使用的具体协议。 2 、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 0 函数来配置s o c k e t 。 r e s u l t = c o n n e c t ( s o c k e t h a n d l e 。r e m o t e a d d r e s s ,a d d r e s s l e n g t h ) : c o n n e c 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 ta p i 中的b i n d 函数让程序将一个本地地址和一个s o c k e t 联系起来。调用如下: 1 0 r e s u l t = b i n d ( s o c k e t h a n d l e ,l o c a l s o c k e t a d d r e s s ,a d d r e s s l e n g t h ) : 当建立服务器程序时,应该将服务器程序设计成等候客户的请求,t c p i p 传输层通过协议端口和应用程序进行通信。 无连接的客户程序也对一个协议端口进行侦听,也使用b i n d 函数让 s o c k e t 执行体登记协议端口,无连接的客户程序告诉s o c k e t 协议体使用哪个 协议端口进行数据传输。 3 、通过s o c k e t 传输数据 通过一个连接的s o c k e t 发送数据,使用面向连接的两个端点通信,两个 端点建立点到点的连接,通过s e n d ,w r i t e ,和w r i t e v 函数发送数据。一个 w r i t e 数调用如下: r e s u l t = w r i t e ( s o c k e t h a n d l e ,m e s s a g e b u f f e r ,b u f f e r l e n g t h ) : 其中第二个参数指向一个包含传输信息的数据缓冲区,必须为缓冲区分 配内存,数据填充到缓冲区内;第三个参数指明数据缓冲区的大小。 通过一个无连接的s o c k e t 发送数据可以使用s e n d t o 和s e n d m s g 这两 个s o c k e ta p i 函数,一个s e n d t o 函数调用如下: r e s u l t = s e n d t o ( s o c k e t h a n d l e m e s s a g e b u f f e r ,b u f f e r l e n g t h ,s p e c i 卜f l a g s ,s o c k e t a d d r e s s s t r u c t u r e a d d r e s s s t r u c t u r e l e n g t h ) 其中第五个参数确定目的地址,第六个参数指明目的地址的大小。 4 、通过s o c k e t 接收数据 s o c k e t 接口包括五个与传送函数对应的接收函数( 见表3 1 ) ,过程和传 输过程相对应。 表3 1s o c k e t 接口的传送函数和接收函数 传送函数对应的接收函数 s e n dr e c v w r i t er e a d v r i t e vr e a d y s e n d t or e c v f r o m s e n d m s gr e c v m s g 硕士学位论文 m s ,i e r s l e s i s 5 、c s 网络编程实现框架 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 e t ( s o c k d g r a m ) a 数据流s o c k e t 采用的是传输控制协议t c p 。t c p 提供的是面向连接的数 据流传输面向连接对可靠性的保证首先是它在进行数据传输之前,必须在 信源和信宿端建立连接。在面向连接传输的每一个报文都需要接收端确认, 未确认的报文被认为是出错的报文。因流s o c k e t 提供的是面向连接、无差错、 先送先发、包长度不限、非重复的网络信息包传输,适合大量的信息传输。 数据报s o c k e t 采用的是用户数据报协议u d p 。它是建立在i p 协议之上的, 提供无连接的不可靠的数据报传输。 两种通信模式的时序图如图3 2 和图3 3 所示。 由图3 2 和图3 3 可以看出,客户机与服务器的关系是不对称的,不管 是数据流方式还是数据报方式,都是服务器先启动,然后在某个时刻客户主 动发出请求服务器被动应答。服务器与客户开始都要调用s o c k e t 0 建立一 个套接字s o c k e t ,然后服务器调用b i n d ( ) 将套接字与一个本地网址( i p 地址 1 2 硕士学位论文 m a s ,i e r s l 【e s i s 和端口号) 捆绑在一起。 服务器客户机 圈3 3 面向连接的s o c k e t 通信时序圈 对于t c p 丽言,服务器再调用l i s t e n0 使套接字处于准备接收状态,同 时规定它的请求队列长度。随后调用a c c e p t0 来接收客户连接,服务器进入 阻塞状态。客户在打开套接字后,通过调用c o n n e c to 和服务器建立连接一 旦连接建立客户就可和服务器进行数据传输直至传输结束。 对于u d p 而言,服务器调用r e c v f r o m ( ) 使自己阻塞,等待客户发来的数 据包而不是连接。客户并不和服务器建立连接,而是调用s e n d t o ( ) 直接发送 1 3 硕士学位论文 m s ,i e r s ll e 5 1 5 包含服务器地址的数据报。 3 1 2 、基于w i n d o w ss o c k e t s 进行编程 w i n d o w ss o c k e t s 规范2 1 定义了一个在t c p i p 网络上开发w i n d o w s 程 序的标准,w i n d o w ss o c k e t 是以动态连接库( d l l ) 来实现s o c k e t 接口的。 图3 4 给出了w i n s o c k 在w i n d o w s 编程环境中的位置,w i n s o c k d l l 位于 t c p i p 协议栈和应用程序的中间。w i n s o c k 管理与t c p i p 协议的接口。 网络数据线 电话线 图3 4w i n s o c k 在w i n d o w s 编程环境中的位置 在v c + + 6 0 的m f c m l 中,提供了对s o c k e t 的封装。m f c 中有两种模式支 持w i n s o c k :c a s y n c s o c k e t 类和c s o c k e t 类。 c a s y n s o c k e t 类封装了w i n d o w ss o c k e t a p i ,提供了较低层的与 1 4 硕士学位论文 m a s ,i e r s l e s i s w i n s o c k e t 的对话接口:c s o c k e t 类继承了c a s y n s o c k e t 类中的一些常用易懂 的a p i 函数。并对c a s y n s o c k e t 类中一些较难控制的a p i 函数和成员函数进 行了处理,它通过忭cc a r c h i v e 对象来操作信息的传送。使用c s o c k e t 类的 编程步骤如下: 1 、构造c s o c k e t 类对象。如:c s o c k e ts e r v e r s o c k e t ;c s o c k e t c li e n t s o c k e t : 2 、使用c s o c k e t 对象的c r e a t e o 函数创建w i n d o w ss o c k e t c r e a t e 0 函数会调用b i n d o 函数将此s o c k e t 绑定到指定的地址上面。如: s e r v e r s o c k e t c r e a t e ( 5 0 0 0 ) :( 服务器的端口号是5 0 0 0 ) c 1i e n t s o c k e t c r e a t eo : 3 、s o c k e t 创建完毕后,在服务器端进行监听客户的连接请求,使用如下 代码,其中5 表示的是待处理的连接队列所允许达到的最大长度是5 : s e r v e r s o c k e t l is t e n ( 5 ) : 4 、对于服务器而言,在这一步将调用a c c e p t0 函数对客户发来的请求进 行接收和处理。而对于客户而言,则会调用c o n n e c 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 仍处于监听状态。使用的形 式如下: 服务器端: c s o c k e tr e c e i v e s o c k e t :s e r v e r s o c k e t a c c e p t ( r e c e i v e ) : 客户端:c i i e n t s o c k e t c o n n e c t 0 : 5 、在客户端和服务器端分别创建一个与之相联系的c s o c k e t f i l e 类对象, 以便以后的数据传输使用。使用的形式如下: 服务器端:c s o c k e t f il es e r v e r s o c k e t f il e ( s e r v e r s o c k e t ) : 客户端:c s o c k e t f i l ec 1 i e n t s o c k e t f i l e ( c l i e n t s o c k e t ) : 6 、在客户端和服务器端分别创建一个( 若同时接收和发送数据则需创 建两个) 与各自s o c k e t f i l e 相联系的c a r c h i v e 类,以便通过它们进行通信 双方数据的发送与接收。使用形式如下: 客户端: 15 硕士学位论文 m s ,i e r s lf f 5 s c a r c h i v ec l i e n t a r l n ( & c l i e n t s o c k e t f i l e ,c a r c h i v e :l o a d ) : c a r c h i v ec l i e n t a r o u t ( & c l i e n t s o c k e t f i l e 。c a r c h i v e :s t o r e ) : 服务器端: c a r c h i v es e r v e r a r l n ( & s e r v e r s o c k e t f i l e ,c a r c h i v e :l o a d ) : c a r c h i r es e r v e r a r o u t ( s e r v e r s o c k e t f i l e ,c a r c h i v e :s t o r e ) : 7 、使用c a r c h i v e 在客户端和服务器端的应用程序之间进行数据的传输。 使用形式如下: 客户端:c 1 i e n t a r i n d a t a l :c 1 i e n t a r o u t d a t a 2 :s e r v e “r o u t ( a c c e p t c l i e n t 0 : ) o n a c c e p t ( ) 主要负责处理客户端的连接请求,对连接请求的处理是通过 调用文档类的成员函数a c c e p t c l i e n t0 来完成的。 4 、生成和编辑c c l i e n t s o c k e t 类的代码 3 5 这个类的基类也是c s o c k e t 。给这个类添加一个文档类指针并修改一下构 造函数,然后再重载一下o n r e c e i v e ( ) 函数即可 文档类指针的添加和构造函数的修改与c l i s t e n s o c k e t 相同,在此不再 赘述。 它的重载函数o n r e c e i v e0 的实现代码如下: v o i dc c l i e n t s o c k e t :o n r e c e i v e ( i n tn e r r o r c o d e ) c s o c k e t :o m r e c e i v e ( n e r r o r c o d e ) : i f ( n e r r o r c o d e = = o ) m _ p d o c - r e a d m e s s a g e ( t h i s ) ;调用文档类函数对信息进行处理 o n r e c e i v e0 函数负责客户端发送来的信息具体的处理过程是通过文档 类的r e a d m e s s a g e ( ) 函数来实现的。 5 、修改文档类 文档类是服务器端的核心,服务器端的功能都是通过文档类来完成的。 下面我们逐一说明。 ( 1 ) 生成“启动服务”菜单命令响应函数o n s t a r t s e r v i c e ( ) 。此函数的 功能是打开所有的数据库,建立侦听套接字,并使服务器处于侦听状态。因 其实现代码较长,现给出其流程图如图6 1 所示: 图7 1 中打开数据库实际上是打开数据库中要使用到的表单。初始化链 表中链表共两个,一个用来存放登录的学生的s o c k e t ,一个用来存放登录的 售票员的s o c k e t ,系统就是通过这两个链表来显示在线的人数的。 ( 2 ) 生成a c c e p t c l i e n t 0 函数。此函数被c 1 i s t e n s o c k e t 类中的 o n a c c e p t0 函数调用,用来完成具体的连接请求操作。其实现代码如下: v o i dc m y d o c :a c c e p t c l i e n t 0 刨建一个新的客户套接字 m s l i e n t s o c k e t = n e wc c l i e n t s o c k e t ( t h i s ) : 用这个新的套接字从侦听套接字中接受请求 i f ( ! ml i s t e n s o c k e t 一 a c c e p t ( 棚c l i e n t s o c k e t ) ) 硕士学位论文 m a s ,i e r s ll e s i s a f x m e s s a g e b o x ( 。s o c k e t 接收出现故障! 。) d e l e t em _ c l i e n t s o c k e t : m _ c 1 i e n t s o c k e t = n u l l : r e t u r n : c s t r i n ga d d r : u i n tp o r t : r e _ c 1 i e n t s o c k e t 一 g e t p e e r n a m

温馨提示

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

评论

0/150

提交评论