




已阅读5页,还剩73页未读, 继续免费阅读
(电路与系统专业论文)圣方超能电器远程控制应用软件设计.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究| = 作及取得的研究 成果。尽我所知,除了文中特另jj j h 以标注利致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其他教育机构的学位或证书而使用过的材料。与我一起 一作的同志刈本研究所做 的任何贡献均已在论文中作了明确的说明并表不了谢意。 本人虢童i 迄 本人签名:基! l 型 日期:,2 。o 丑一生一中 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:学校 有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或 部分内容,可以允许采用影印、缩印或其他复制手段保存论文。( 保密的论文在解 密后遵守此规定) 本人签名 导师签名 丛邀 摇五囱 f 日期:呈! 呈三! 盥 f 1 期:纽盟! ,丝 摘要 本论文的主要任务是为西安圣方数码科技有限责任公司的超能电器二代平台 设计远程控制应用软件。远程控制通过计算机网络实现计算机之间的控制与被控 制,给当今i t 行业的工作人员带来了很大的方便。异地工作的用户可以利用远程 控制软件连接办公室的计算机,实现远程文件检索;i t 管理人员亦可利用远程控 制高效地管理远程服务器。此外,远程控制还可以提供对网络会议和远程教学等 的支持。本论文的远程控制软件采用v i s u a lc + + 6 0 提供的m f c 类库来编写,同 时采用大量的w i n d o w sa p i 函数实现各种远程控制功能。本论文对在进行编程工 作中涉及到的w i n d o w s 系统编程、w i n d o w s 网络编程和套接字编程等内容,亦作 了比较深入的讨论。 关键词 远程控制w i n d o w s套接字 a b s t r a c t t h i sp a p e r sm a i nt a s ki st od e s i g nt h ea p p l i c a t i o ns o f t w a r eo fr e m o t e c o n t r o lf o r t h ep l a t f o r mo fs u p e ri n s t r u m e n ti i r e m o t e c o n t r o lr e a l i z e st h ec o n t r o l sb e t w e e n c o m p u t e r st h r o u g ht h ec o m p u t e rn e t w o r k i tc o m e su pw i t hm u c hc o n v e n i e n c ef o rt h e p e o p l eo fi tc a r e e r t h eu s e r sf a ra w a yf r o mo f f i c e sc a l ld i a lu pt ot h ec o m p u t e r si nt h e o f f i c e sb yt h es o f t w a r eo fr e m o t e c o n t r o l ,a n dr e a l i z et h er e m o t e - f i l e r e t r i e v e t h e m a n a g e r so fi tc a r e e rc a nm a n a g et h es e r v e r sf a ra w a ye f f i c i e n t l yb yt h es o f t w a r eo f r e m o t e c o n t r o ly e t t h er e m o t e c o n t r o lc a na l s oh a v et h ea b i l i t yo f r e m o t e m e e t i n ga n d r e m o t e t e a c h i n g t h ea p p l i c a t i o ns o f t w a r eo fr e m o t e - c o n t r o li sd e s i g n e db ym f co f v i s u a lc + + 6 0 a n dt h ed i f f e r e n tr o i e so fr e m o t e - c o n t r o la r er e a l i z e db yu s i n gm a n y w i n d o w sa p if u n c t i o n s t h i sp a p e ra l s od i s c u s s e st h ew i n d o w ss y s t e mp r o g r a m m i n g 、 t h ew i n d o w sn e m , o r kp r o g r a m m i n ga n dt h es o c k e tp r o g r a m m i n gd e e p l y k e y w o r d :r e m o t e c o n t r o lw i n d o w s s o c k e t 第一章绪论 第一章绪论 1 1圣方超能电器简介 本论文所设计的远程控制软件属于圣方超能电器操作系统平台中的一部分。 圣方超能电器是西安圣方数码科技有限责任公司运用数字化技术开发的一种全新 信息化家电产品,集高清晰度电视、多媒体电脑、i n t e m e t 、可视电话、视频会议、 远程控制、语音答录、家庭视昕娱乐( 卡拉o k 、游戏) 等功能于一体,娱乐性 与实用性兼备,是一种高度集成的全能终端产品,尤其是宽带网络系统最理想的 通讯终端。 1 2远程控制的概念 远程控制的概念并不难理解,简单地讲,远程控制能够使人们通过网络实现 一台计算机对另一台计算机进行的某种程度的控制。例如:远程关闭网络上的一 台计算机。 现在市场k 已有成熟的远程控制应用软件,例如赛门铁克公司的p c a n y w h e r e 软件,无论是远程控制个人计算机、管理服务器、支持客户或是帮助朋友, p c a n y w h e r e 都是不错的选择。 远程控制给当今i t 行业的工作人员带来了很大的方便。使用远程控制软件, 移动用户即使远离办公室,也能够保持同样的工作效率,也就是说,在家里办公 或是在异地工作的用户可以利用远程控制软件来连接办公室的计算机,实现远程 检索文件或是运行桌面应用程序;i t 管理人员还可以利用远程控制高效地管理远 程的服务器。 此外,远程控制软件亦可提供对网络会议的支持,并且,也可将远程控制应 用于教学中,实现远程教学。 圣方超能电器远程控制应用软件设计 1 3本论文的任务 本论文的远程控制软件属于圣方超能电器操作系统平台中的一部分。超能电 器既可以作为远程控制的控制端计算机,也可以作为被控端计算机。控制端计算 机和被控端计算机是一种相互协作的关系。所以,在这个意义上,本论文所研究 的远程控制也可以称之为远程协控。网络黑客所使用的远程控制木马程序的工作 方式,不是本论文所讨论的内容。 本论文对w i n d o w s 系统编程、w i n d o w s 网络编程、套接字编程等内容作了比 较深入的讨论;并且结合这些编程技术,针对超能电器所要求的远程控制功能, 在v i s u a lc + + 6 0 编程平台下设计实现了超能电器的控制端程序和被控端程序。 在局域网环境下,本论文所设计的控制端和被控端程序在w i n d o w s9 8 平台下通 过了软件测试,所要求的远程控制功能都已顺利实现。 第二章w i n d o w s 编程和v i s u a lc + + 6 0 第二章w i n d o w s 编程和v i s u a lc + + 6 0 2 1w i n d o w s 编程 本论文介绍的远程控制应用软件属于w i n d o w s 平台下的应用程序。所以,在 介绍具体的远程控制程序之前,有必要了解一下w i n d o w s 编程的一些基础内容。 2 1 1w i n d o w s 编程平台 目前,m i c r o s o f t 公司销售着三种不同的操作系统内核,每种内核经过优化后, 适用于某种特定的环境。m i c r o s o f t 公司对每种平台提供了相同的应用程序编程接 口( a p i ) ,以便吸引软件开发人员使用w i n d o w s 。这三种内核分别是w i n d o w s 2 0 0 0 、w i n d o w s9 8 和w m d o w sc e 。实际上,各个内核是有差异的,这意味着不 同的内核的基本概念相同,但是它们的具体细节不同。 w i n d o w s2 0 0 0 是m i c r o s o f t 公司推出的高端操作系统,它具有很多出色的特 性: 可以作为工作站、服务器和数据中心来运行 系统非常健壮,可以避免编写得不够出色的应用程序导致系统的崩溃 系统非常安全,能防止未经授权的人访问系统管理的资源( 文件和打 印机等) 拥有非常丰富的工具和实用程序,可供机构中的管理人员管理操作系 统 内核大多是用c 和c + + 编写的,因此该系统可以很容易移植到其它 c p u 结构中去 系统本身就能支持u n i c o d e ,因此,用其它国家的语言进行系统的本 地化是非常容易的 圣方超能电器远程控制应用软件设计 具有极其丰富的内存管理特性 具有结构化异常处理( s h e ) 特性,可以方便地进行错误的恢复 动态链接库( d l l ) 的使用使得系统的扩展非常方便 多线程和对多处理器的支持,使系统具各很好的伸缩性 文件系统的出色特性可以用来很好地跟踪用户是如何处理他们计算 机上的数据的 w i n d o w s9 8 是m i c r o s o f t 公司面向消费者推出的操作系统内核。它拥有 w i n d o w s2 0 0 0 的许多特性,但是不包括某些关键特性。例如,w i n d o w s9 8 不够 健壮( 一个应用程序可以导致系统的崩溃) ,不够安全,是单处理器内核,同时对 u n i c o d e 的支持不如w i n d o w s2 0 0 0 。w i n d o w s9 8 内核之所以能够存在下去,原因 是w i n d o w s9 8 比w i n d o w s2 0 0 0 具有更强的用户友好特性,所以它的消费市场相 当大。 w i n d o w sc e 是m i c r o s o f t 公司推出的最新w i n d o w s 内核。这种新型操作系统 的推出是为了满足小型硬件设备的需要,这些设备包括手提式计算机、汽车用p c 、 智能终端、电烤箱、微波炉和自动售货机等。这些设备的用电量通常比较小,内 存量不大,并且拥用很小的持久性存储器。由于这些硬件的限制,m i c r o s o f t 公司 不得不开发一种新型操作系统内核,它的规模既小于w i n d o w s2 0 0 0 ,也小于 w i n d o w s9 8 。由于w i n d o w sc e 的机器主要是供个人使用的,因此,它的内核不 需要许多对管理和伸缩性等特性的支持。 2 1 2内核对象 使用w i n d o w s a p i 进行w i n d o w s 平台下的编程,首先就要涉及到内核对象以 及它们的句柄。 进行w i n d o w s 平台编程,操作系统要创建和操作若干类型的内核对象,比如: 存取符号对象、事件对象、文件对象、文件映射对象、i o 完成端口对象、作业 对象、信箱对象、互斥对象、管道对象、进程对象、信标对象、线程对象和等待 计时器对象等。这些对象都是通过调用函数来创建的。例如:c r e a t e f i l e m a p p i n g 函数可使系统能够创建一个文件映射对象。每个内核对象只是内核分配的一个内 存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该 对象的各种信息。有些数据成员( 安全描述符、使用计数等) 在所有对象类型中 都是相同的,但大多数数据成员属于特定的对象类型。例如:进程对象有一个进 程i d 、一个基本优先级和一个退出代码,而文件对象则拥有一个字节位移、一个 第二章w i n d o w s 编程和v i s u a lc + + 6 0 共享模式和一个打开模式。 由于内核对象的数据结构只能被内核访问,因此应用程序无法在内存中找到 这些数据结构并直接改变它们的内容。m i c r o s o f t 公司规定了这个限制条件,目的 是为了确保内核对象结构保持状态的一致。这个限制也使m i c r o s o f t 公司能够在不 破坏任何应用程序的情况下在这些结构中添加、删除和修改数据成员。 我们不能直接改变这些数据结构,w i n d o w s 提供了一组函数,以便用定义得 很好的方法来对这些结构进行操作。这些内核对象始终都可以通过这些函数进行 访问。当调用一个用于创建内核对象的函数时,该函数就返回一个用于标示该对 象的句柄。将这个句柄传递给w i n d o w s 的各个函数,这样,系统就能知道你想操 作哪个内核对象。为了使操作系统变得更加健壮,这些句柄值是与进程密切相关 的。 内核对象由内核所拥有,而不是由进程所拥有,也就是说,进程调用了一个 创建内核对象的函数,然后进程终止运行,那么内核对象不一定被撤销。内核知 道有多少进程正在使用某个内核对象,因为每个对象包含一个使用计数。使用计 数是所有内核对象类型常用的数据成员之一。 2 1 3进程 进程通常被定义为一个正在运行的程序的实例,它由两部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存 放关于进程的统计信息的地方。 另一个是地址空间,它包含所有可执行模块或d l l 模块的代码和数 据。 进程是不活泼的,若要使进程完成某项操作,它必须拥有一个在它的环境中 运行的线程,该线程负责执行包含在进程的地址空间中的代码。实际上,单个进 程可能包含若干个线程,所有这些线程都同时执行进程地址空间中的代码。为此, 每个线程都有它自己的一组c p u 寄存器和它自己的堆栈。每个进程至少拥有一个 线程来执行进程的地址空间中的代码。 若要使所有这些线程都能运行,操作系统就要为每个线程安排一定的c p u 时 间。操作系统通过以一种循环方式为线程提供时间片,造成一种假象,仿佛所有 的线程都是同时运行的一样。如果计算机拥有多个c p u ,那么操作系统就要使用 复杂得多的算法来实现c p u 上线程负载的平衡。 6亟方超能电器远程控制应用软件设计 2 1 4线程 线程也是由两部分组成的: 一个是线程的内核对象,操作系统用它来对线程实簏管理。内核对象 也是系统用来存放线程统计信息的地方。 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参 数和局部变量。 线程总是在某个进程环境中创建的,而且,它的整个寿命期都在该进程中。 这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据 进行操作。 进程使用的系统资源比线程多得多,原因是它需要更多的地址空间。为进程 创建一个虚拟地址空间需要许多系统资源。系统中要保留大量的记录,这要占用 大量的内存,而线程使用的系统资源要少得多。实际上,线程只有一个内核对象 和一个堆栈,保留的记录很少,因此需要很少的内存。 2 1 5内存 在3 2 位w i n d o w s 平台下,每个进程都被赋予它自己的虚拟地址空间,这个 地址空间的大小是4 g b ,因为3 2 位指针可以拥有从0 x 0 0 0 0 0 0 0 0 至0 x f f f f i 衙之间 的任何一个值。这使得一个指针覆盖了一个进程的4 g b 虚拟地址空间的范围。 由于每个进程可以有它自己的私有地址空间,因此当进程中的一个线程正在 运行时,该线程可以访问只属于它的进程的内存。属于其它进程的内存则隐藏着, 并且不能被正在运行的线程访问。 进程的4 0 b 地址空间是个虚拟地址空间,不是物理地址空间。该地址空间只 是内存地址的一个范围,在进程能够成功地访问数据而不会出现违规访问之前, 必须赋予物理存储器。 对于w i n d o w s2 0 0 0 和w i n d o w s9 8 来说,4 g b 内存地址空间的划分是不同的。 以w m d o w s9 8 为例,4 0 b 空间可以分为如下几部分:n u l l 指针分配的分区; m s - d o s 1 6 位w m d o w s 应用程序兼容分区;用户方式分区;共享内存映射文件 ( m m f ) ;内核方式分区。 用户方式分区是进程的私有( 非共享) 地址空间所在的地方。对于所有应用 第二章w m d o w s 编程和v i s u a lc + + 6 0 程序来说,该分区是维护进程的大部分数据的地方。由于每个进程可以得到它自 己的私有的、非共享分区,以便存放它的数据,因此,应用程序不太可能被其它 应用程序所破坏,这使得整个系统更加健壮。 共享的m m f 分区是系统用来存放所有3 2 位进程共享数据的地方。例如,系 统的动态链接库k e r n e l 3 2 d u 、a d v a p l 3 2 d l l 、u s e r 3 2 d l l 和g d l 3 2 d l l 等,全部存 放在这个地址空间分区中,因此,所有3 2 位进程都能很容易地同时访问它们。系 统还为每个进程将d l l 加载到相同的内存地址。此外,系统将所有内存映射文件 映射到这个分区中。 内核方式分区是存放操作系统代码的地方。用于线程调度、内存管理、文件 系统支持、网络支持和所有设备驱动程序的代码全部在这个分区加载。驻留在这 个分区中的一切均可被所有进程共享。 2 1 6动态链接库 自从m i c r o s o f t 公司推出第一个版本的w i n d o w s 操作系统以来,动态链接库 ( d l l ) 一直是这个操作系统的基础。并且,w i n d o w sa p i 中的所有函数都包含 在d l l 中。3 个最重要的d l l 是:k e r n e l 3 2 d l l ,它包含用于管理内存、进程和 线程的各个函数;u s e r 3 2 d 1 1 ,它包含用于执行用户界面任务的各个函数: g d l 3 2 d l l ,它包含用于画图和显示文本的各个函数。w i n d o w s 还配有若干别的 d l l ,它们提供了用于执行一些特殊任务的函数。例如:a d v a p l 3 2 d l l 包含用于 实现对象安全性、注册表操作和事件记录的函数;c o m d l 9 3 2 d l l 包含常用对话框; c o m c t 3 2 d l l 则支持所有的常用窗口控件。 d l l 之所以得以广泛应用,是因为它具有如下一些特性: d l l 扩展了应用程序的特性 d l l 可以用许多种编程语言来编写 d l l 简化了软件项目的管理 d l l 有助于节省内存 d l l 有助于资源的共享 d l l 有助于应用程序的本地化 d l l 有助于解决平台差异 创建d l l 常常比创建应用程序更容易,因为d l l 往往只包含一组应用程序 可以使用的自主函数。在d l l 中通常没有用来处理消息循环或创建窗口的支持代 码。d l l 只是一组源代码模块,每个模块包含了应用程序或另一个d l l 将要调 圣方超能电器远程控制应用软件设计 用的一组函数。当所有源代码文件编译后,它们就像应用程序的可执行文件那样 被链接程序所链接。 在应用程序或另一个d l l 能够调用d l l 中的函数之前,d l l 文件影像必须 被映射到调用进程的地址空间中。若要进行这项操作,可以使用两种方法巾的一 种,即加载时的隐含链接或运行期的显式链接。 旦d l l 的文件影像被映射到调用进程的地址空间中,d l l 的函数就可以 供进程中运行的所有线程使用。实际上,d l l 几乎将失去它作为d l l 的全部特 征。对于进程中的线程来说,d l l 的代码和数据看上去就像恰巧是在进程的地址 空问中的额外代码和数据一样。 2 1 7 窗口 在设计w i n d o w s2 0 0 0 或w i n d o w s9 8 所使用的窗口系统时,微软有两个主要 目标: 尽可能保持与过去1 6 位w i n d o w s 的兼容性,便于开发人员移植他们 已有的1 6 位w i m o w s 程序。 使窗口系统健壮,一个线程不会对系统中其它线程产生不利影响。 但是,这两个目标是直接相互冲突的。在1 6 位w i n d o w s 系统中,向窗口发 送一个消息总是按同步方式执行的:发送程序要在接受消息的窗口完全处理完消 息之后才能继续运行。这通常是一个所期望的特性,但是,如果接受消息的窝口 花很长的时f 、自j 来处理消息或者出现挂起,则发送程序就不能再技行,这意昧着系 统是不强壮的。 这种冲突给微软的设计人员带来了一定的困难,他们的解决方案是两个相互 冲突目标之间的出色折中方案。 w i n d o w s 允许一个进程至多建立1 0 0 0 0 个不同类型的用户对象:图标、光标、 窗 】类、菜单、加速键表等。当一个线程调用一个函数来创建某个对象时,则该 对象就归这个线程的进程所拥有。这样,当进程结束时,如果没有明确删除这个 对象,则操作系统会自动删除这个对象。对窗口和挂钩这两种用户对象,它们分 别为建立窗口和安装挂钩的线程所拥有。如果一个线程建立一个窗口或安装一个 挂钩,然后线程结束,操作系统会自动删除窗1 :3 或卸载挂钩。 建立窗口的线程也是为窗口处理所有消息的线程,这也意味着一个线程如果 建立了一个窗口,都会由系统对它分配一个消息队列。这个队列用于窗口消息的 派送,为了使窗口接收这些消息,线程必须有它自己的消息循环。 第二章w i n d o w s 编程和v i s u a lc h60 2 1 8硬件输入模型 微软设计输入模型的一个主要目标就是为了保证一个线程的动作不要对其它 线程的动作产生不好的影响。在1 6 位w i n d o w 中,如果一个任务引起一个死循环, 所有的任务都被挂起,不能再响应用户,用户只能重新启动计算机。强壮的操作 系统,例如w i n d o w s2 0 0 0 和w i n d o w s9 8 ,不会使一个挂起的线程妨碍系统中其 它线程接收硬件输入。 图2 - 1 系统的硬件输入模型 圣方超能电器远程控制应用软件设计 上图概括描述了系统的硬件输入模型。当系统初始化时,要建立一个特殊的 线程,即原始输入线程( r a wi n p u t t h r e a d ,p i t ) 。此外,系统还要建立一个队列, 称为系统硬件输入队列( s y s t e mh a r d w a r ei n p u tq u c u e ,s h i q ) 。p i t 和s h i q 构成 系统硬件输入模型的核心。 r i t 通常处于睡眠状态,等待有一项出现在s h i q 中。当用户按下和放开一 个键,按下或放开一个鼠标按钮或移动鼠标的时候,这些硬件设备的设备驱动程 序就向s h i q 中增加一个硬件事件,这个操作将唤醒r i t 。然后r i t 从s h i q 中 提取这个项,并将这个事件转换成适当的消息。转换成的消息再添加到适当的线 程的虚拟输入队列( v i q ) 中。然后r i t 再循环等待更多的消息出现在s i 4 q 中。 利用这种机制,能够实现线程的保护,避免相互之间影响。如果p i t 向窗口 b 1 或窗口b 2 发送一个消息,消息到达线程b 的虚拟输入队列,在处理消息时, 线程b 要与内核对象进行同步,有可能会进入死循环。如果发生这种情况,线程 b 仍然同r i t 连接在一起,并且可能有更多的消息要增加到线程b 的虚拟输入队 列中。 在这种情况下,用户会发现窗口b i 和b 2 都没有反应,可能想切换到窗口 a 1 。为了作这种切换,用户按a l t + t a b ,因为是r i t 处理a l t + 1 曲按键组合,所 以用户总能切换到另外的窗口,不会有什么问题。在选定窗口a 1 之后,线程a 就连接到r t t 。这个时候,用户就可以对窗口a 1 进行输入,尽管线程b 及其窗 口都没有响应。 2 ,2v i s u a jc + + 6 0 本论文的远程控制软件的设计是在v i s u a lc 十+ 6 0 编程环境下进行的。所以 这一部分对v i s u a lc _ l + 6 0 的开发环境进行简单的介绍。 在v i s u a lc + + 6 0 中,包含了若干个w i n d o w s 应用程序开发系统。可以选择 使用w i n 3 2a p i 来开发c 语言w i n d o w s 程序。使用许多v i s u a lc + + 工具,包括资 源编辑器等,可以使这种低级w i n 3 2 编程变得容易。此外,v i s u a lc 抖6 0 中还 提供了a c t i v e x 模板库( a t l ) ,通常使用a t l 来为i n t e m e t 开发a c t i v e x 控件。 a t l 编程不是w i n 3 2c 语言编程,也不是m f c 编程,相当复杂。v i s u a lc 十卜6 0 提供的最后一个开发工具就是m f c ( m i c r o s o f tf o u n d a t i o nc l a s s ) 应用程序框架。 c + + 语言现在是重要的应用程序开发标准,对于w i n d o w s 平台来说,需要一 个c + + 的编程接口。而w i n d o w s 操作系统的开发者m i c r o s o f t 公司所提供的这个 接口就是m f c 库。本论文的远程控制软件就是基于m f c 类库而编写的w i n d o w s 平台下的应用程序。 第三章w i n d o w s 平台下的网络编程技术 第三章w i n d o w s 平台下的网络编程 3 1w i n d o w s 平台下的网络编程技术 随着计算机网络技术的飞速发展,越来越多的人认识到了网络编程的重要性, i n t e m e t 上的应用,如电子商务等,都要求通过网络编程为用户提供具有高度互动 性的内容。 对于w i n d o w s 平台,微软公司研制了许多出色的网络编程技术,概括起来, 主要有以下几种:n e t b i o s 技术;重定向器:邮槽;命名管道:w i n s o c k ;客户端 远程访问服务器( r a s ) 。 这些网络编程技术都有各自的使用范围,本文介绍的远程控制软件是基于 w i n s o e k 技术的,下一小节将详细介绍w i n s o c k 技术,这一部分先来介绍其它的 网络编程技术。 3 。1 1n e t b i o s 技术 “网络基本输入输出系统”( n e t w o r kb a s i ci n p u t o u t p u ts y s t e m ,n e t b i o s ) 是一种标准的应用程序编程接口( a p i ) ,1 9 8 3 年由s y t e k 公司专为i b m 开发成 功。n e t b i o s 为网络通信定义了一种编程接口,但却没有详细定义物理性的帧如 何在网络上传输。1 9 8 5 年,i b m 创制了n e t b i o s 扩展用户接口( n e t b i o se x t e n d e d u s e r i n t e r f a c e ,n e t b e u i ) ,它同n e t b i o s 接口集成在一起,终于构成了一套完整 的协议。由于n e t b i o s 接口变得愈来愈流行,所以各大厂商也开始在其它如 t c p i p 和i p x s p x 的协议上实施n e t b i o s 编程接口。到目前为止,全球已有许 多平台和应用程序需要依赖于n e t b i o s ,其中包括w i n d o w sn t ,w i n d o w s9 5 和 w i n d o w s9 8 的许多组件。 在这里,插入一段对o s i 网络模型的介绍,“开放系统互连”( o s l ) 模型从 一个很高的层次对网络系统进行了描述。o s i 模型总共包含了七层,从最顶部“应 用层”开始,一直到最底部“物理层”,这七层完整阐述了最基本的网络概念。 圣方超能电器远程控制应用软件设计 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 图3 1o s i 网络模型 应用层为用户提供相应的界面,以便使用提供的连网功能;表示层完成数据 的格式化;会话层控制两个主机间的通信链路( 打开、操作、关闭等) ;传输层提 供数据传输服务( 可靠或不可靠) ;网络层在两个主机之间提供一套定址寻址机 制,同时负责数据包的路由选择;数据链路层控制两个主机间的物理通信链路, 同时还要负责对数据进行整形,以便在物理媒体上传输;物理层负责以一系列电 子信号的形式传送数据。对应o s i 模型,n e t l 3 i o s 主要在会话层和传输层工作。 n e t b s 方案适用于为数众多的网络协议,使得编程接口“与协议无关”。换 言之,假如根据n e t b i o s 规范设计了一个应用程序,它就能在t c p 1 p 、n e t b e u i 甚至i p x s p x 上运行。这是一项非常有用的特性,因为对一个设计得当的n e t b i o s 应用程字来说它几乎能左任何机器上运彳亍,无论机器连接j :钧理冈络足i ;么。 然而,我们也必须留意几个方面的问题,要想使两个n e 忸i o s 应用程序通过网络 进行正常通信,那么对它们各自运行的机器来说,至少必须安装一种两者通用的 协议。 此外,只有部分协议实施了n e t b i o s 接口。m i c r o s o f tt c p i p 和n e t b e u i 在 默认情况下己提供了一个n e t b i o s 接口:然而,i p x s p x 却并非如此。为此,微 软专门提供了一个i p x s p x 版本,在其中实现了该接口。安装协议时,具有 n e t b i o s 能力的i p x s p x 协议通常会自动提醒你注意这方面的问题。 要注意的一个重要问题是n e t b i o s 并非是一种可路由的协议。假定在客户机 和服务器之间存在一个路由器,那么这种协议在两部机器上的应用便无法沟通。 收到数据包后,路由器便会将其无情地抛弃。 n e t b i o s 同时提供了面向连接和无连接的通信模式,并且,提供了一种统一 的名字解析及注册能力,换言之,对一个n e t b i o s 应用来说,只需一个n e t b i o s 名字便可工作。尽管n e t b i o s 功能强大,但可惜的是,由于问世较早,在功能上 第三章w i n d o w s 平台下的网络编程技术 存在着诸多限制。 3 1 2 重定向器 w i n d o w s 使应用程序能通过操作系统内建的文件系统服务在网络上通信。有 时候,我们将之称为“网络操作系统”( n o s ) 能力。这一部分,我们将利用w i n d o w s 9 5 、w i n d o w s9 8 、w i n d o w sn t 、w i n d o w s2 0 0 0 和w i n d o w sc e 等均含有的w i n d o w s 文件系统组件,介绍这些网络连接能力。 若应用程序希望访问本地系统中的文件,需要依赖操作系统来满足i o ( 输 入输出) 请求。我们通常把它称为“本地i o ”。例如,在一个应用程序打开或关 闭文件时,需要由操作系统来决定如何访问包含了指定文件内容的一个设备。找 到设备后,i o 请求会被转发给一个本地设备驱动程序。通过网络来访问一个设 备也是同样的。然而,l j o 请求必须通过网络转发给对应的远程设备。我们将其 称为“i o 重定向器”( i or e d i r e c t i o n ) 。例如,w i n d o w s 允许我们将一个本地磁 盘标识符( 如e :) 映射或重定向到远程计算机上的一个目录共享入口。应用程序 若指出自己需要使用e :时,操作系统便会将i o 请求自动重定向至一个设备,那 个设备叫做“重定向器”。重定向器会建立到达远程计算机的一个网络信道,以便 访问指定的远程目录。 “u n c ”路径为嘲络文件及设备的访问建立了一套统一的规范。它的最大特 点,便是不必指定或引用一个已经映射到远程文件系统的本地驱动器字母。这一 点非常重要,因为应用程序可变得与驱动器字母无关。在复杂的刚络环境中,应 用程序不必对此有任何顾忌。同引用本地驱动器字母的方法相比,l r n c 名字要优 越得多,因为在访问共享资源时,不必担心用光有限的驱动器字母的问题。另外, 驱动器字母的分配也和具体的用户有着密切的关系一一如果进程在用户环境中不 能运行,便无法利用由该用户规定的驱动器字母映射关系。 u n c 名字完全解决了这些问题,它的格式如下: 服务器 共享名】 路径 第一部分是服务器1 ,必须以两个反斜杠开头,紧跟着一个服务器名字。服 务器名字代表着网络中的一台远程服务器,我们想访问的远程文件便位于其中。 在u n c 名字中,第二部分是共享名1 ,它对应着远程服务器上的一个共享入口 或者共享位置,实际上就是文件系统中的一个目录,表示可共享的资源便方在这 个位置下面,是其它机器获取共享资源的入口。而第三部分【路径】对应的是共享 位置下的某个具体目录。举个例子来说,假定现在有一台名为m y s e r v e r 的服务器, 圣方超能电器远程控制应用软件设计 在其本地硬盘驱动器d :上设置了一个共享目录,名为d :i y f i l e s c o o l w i u s i c ,并 将这一长串名字简化为“m y s h a r e ”这个易记的共享名。现在,假定该共享目录下 含有一个名为s a m p l e r a p 3 的文件。那么,假定网络中其它任何一台机器想引用 这个m p 3 音乐文件,只需像下面这样指定它的u n c 名字即可: m y s e r v e r m y s h a r e s a m p l e r a p 3 可以看出,与其将一个本地驱动器字母映射到共享目录m y s h a r e ,还不如通 过网络用i y n c 名字来直接引用一个文件一一凼为所有机器使用的都是同样的 u n c 名字。 若通过u n c 名字在网络中引用文件,应用程序便不必关心通过网络建立连 接的细节,这显然是一种非常出色的设计。使用u n c 名字,系统便可以非常轻 松地定位网络服务器共享目录以及文件路径。网络通信的所有细节都是由网络提 供者的“重定向器”来负责控制的。稍后的邮槽和命名管道技术非常依赖u n c 名字。 在下图中,我们展示了w i n d o w s 环境下在网络操作系统上建立u n c 连接所 需的一些常规组件。此图也显示了数据流在客户机与服务器的n o s 组件之间逐渐 推进的情况。 客户机 应用程序 拿 m u p 今 ( 重定向器) 网络提供者 害 传送驱动程序 土 网络接口卡 服务器 本地i o ? 重定向器服务器服务 土 传送驱动程序 土 网络接口卡 图3 2 重定向器的各个组件 第三章w i n d o w s 平台下的网络编程技术】5 m u p 是一种资源定位器,负责选择具体的网络提供者,来满足u n c 连接请 求。所谓网络提供者,其实就是一种服务,可通过网络硬件访问位于一台远程计 算机上的资源( 文件和打印机等) 。m u p 需要通过一个网络提供者,在以u n c 名字为基础的所有文件及打印机i o 请求上提供服务,建立通信关系。w i n d o w s n t 、w m d o w s2 0 0 0 、w i n d o w s9 5 和w i n d o w s9 8 均支持多个网络提供者的安装。 w i n d o w s 平台支持一个名为“m i c r o s o f t 网络用户”( c l i e n t f o r m i e r o s o f t n e t w o r k ) 的网络提供者。当然,亦可安装除微软以外的其它网络提供者,比如,n o v e l l 公 司的n o v e l lc l i e n tv 3 0 1f o rw i n d o w s9 5 9 8 等。换句话说,一次可能有多个网络提 供者为一个u n c 请求提供服务。 3 1 3 邮槽 m i c r o s o f tw i n d o w sn t 、w i n d o w s2 0 0 、w i n d o w s9 5 和w 证d o w s9 8 一一但不 包括w i n d o w sc e 一一提供了一种简单的单向“进程问通信”机制。这个机制的 名字非常古怪,叫做邮槽( m a i l s l o t ) 。用最简单的话来说,通过邮槽,客户进程 可将消息传送或广播给一个或多个服务器进程。在同一台计算机的不同进程之间, 或在跨越整个网络的不同计算机的进程之间,协助进行消息的传输。用邮槽来开 发应用程序是一件非常简单的事情,不要求对t c p f l p 或i p x s p x 这样的基层网 络传送协议有着非常深入的了解。由于邮槽是围绕着一个广播通信体系设计出来 的,所以当然不能指望能通过它来实现数据的可靠传输。然而,在某些特殊类型 的网络编程环境中,假如对数据传输的可靠性要求不高,那么邮槽仍然是一种非 常有价值的技术。 例如,要想在办公室的所有人员之间建立一个简单的传信系统,便可考虑用 邮槽来设计这个程序。想像办公室环境拥有大量工作站。恰巧,办公室目前苏打 短缺,每隔几分钟,每名工作站用户都有兴趣知道苏打机里还剩下多少可乐。利 用邮槽,便可轻易地设计出这种程序。我们可简单地编制一个邮槽客户端应用, 用它监视苏打数量,并以五分钟为周期,将剩余的可乐数量广播给每一名感兴趣 的工作站用户。由于邮槽并不能担保广播消息的可靠性,所以有些工作站用户也 许收不到所有的更新通知。但是在这种情况下,少数的传输失败并不是个问题, 因为消息每隔五分钟便会发送一遍,所以即使偶尔出错,收到消息的频率也相当 高,足以让工作站用户跟上目前的最新情况。 邮槽最大的一个缺点是只允许从客户机到服务器,建立一种不可靠的单向数 据通信。而另一方面,邮槽最大的一个优点在于,它们使客户机应用能够非常容 易地将广播消息发送给一个或多个服务器进程。 圣方超能电器远程控制应用软件设计 由于邮槽要依赖w i n d o w s 文件系统服务在网上来创建和传输数据,所以接口 是与协议无关的。编制应用程序时,不必关心基层网络传送协议的细节,不必知 道它在一个网络中如何在进程之间建立通信。邮槽所依赖的w i n d o w s 文件系统服 务需要依赖w i n d o w s 重定向器,使用“服务器消息块”( s m b ) 协议,将数据从 客户机传送给服务器。消息通常都是通过“无连接”传输方式来发送的,但亦可 强迫w i n d o w s 重定向器在w i n d o w sn t 和w i n d o w s2 0 0 0 上使用面向连接的传输 方式,至于具体采用哪种方式,要由消息的长度决定。 3 1 4 命名管道 命名管道或命名管线( n a m e d p i n e s ) 是一种简单的进程间通信机制。m i c r o s o f t w i n d o w sn t 、w i n d o w s2 0 0 0 、w i n d o w s9 8 和w i n d o w s9 5 均提供了对它的支持。 命名管道可在同台计算机的不同进程之间,或在跨越一个网络的不同计算机的 不同进程之间,支持可靠的、单向或双向的数据通信。用命名管道来设计应用程 序非常简单,并不需要事先深入掌握基层网络传送协议( t c p i p 、i p x s p x 等) 的知识。这是由于命名管道利用了微软网络提供者( m s n p ) ,通过一个网络,在 各进程间建立通信。这样一来,应用程序便不必关心网络协议的细节。之所以要 利用命名管道作为自己的网络通信方案,一项重要的原因是它们充分利用了 w i n d o w s n t 及w i n d o w s2 0 0 0 内建的安全特性。 假定我们要开发一个数据库管理系统,只允许一个指定的用户组进行操作。 办公室中有一部计算机,其中保存着公司的秘密,我们要求只有公司的管理人员 才能访问及处理这些秘密。公司的每名员工都可看到网络七的这台计算机,然而, 我们并不希望普通员工取得对机密材料的访问权。在这种情况下,命名管道可发 挥出很好的作用,因为我们可开发一个服务器应用程序,令其以来自客户机的请 求为准,对公司的秘密进行安全操作。服务器可将客户访问限制在管理人员身上, 用w i n d o w sn t 或w m d o w s2 0 0 0 自带的安全机制,便可非常轻松地做到这一点。 将命名管道作为一种网络编程方案使用时,它实际上建立了一个简单的客户 机朋匣务器数据通信体系,可在其中可靠地传送数据。命名管道是围绕w i n d o w s 文件系统设计的一种机制,采用“命名管道文件系统”( n a m e d p i p ef i l es y s t e m , n p f s ) 接口。因此,客户机和服务器应用可利用标准的w i n 3 2 文件系统a p i 函 数( r e a d f i l e 、w r i t e f i l e 等) 来进行数据的收发。通过这些a p i 函数,应用程序 便可直接利用w m 3 2 文件系统命名规范,以及w m d o w s n t w i n d o w s2 0 0 0 文件系 统的安全机制。 第三章w i n d o w
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业机械设备维护策略规划与成本控制分析报告
- 房屋灯光改造工程方案(3篇)
- 农业无人机租赁市场现状与未来运营挑战研究报告
- 安全教育日培训感悟课件
- 工程部方案优化(3篇)
- 狂人日记课件
- 电气工程定价方案(3篇)
- 牵引腰椎课件
- 安全教育平台操作培训课件
- 安全教育培训题库公司课件
- 五年级英语阅读理解试题及答案15篇(word文档)
- 中华人民共和国史马工程课件01第一章
- GB/T 36713-2018能源管理体系能源基准和能源绩效参数
- GB/T 17769-1999航空运输集装器的管理
- 药品注册审评员考核试题及答案
- 机器人常用手册-系列中文版-epx2900a00使用说明书
- optimact540技术参考手册
- 光伏电站组件清洗周边除草治理方案
- 建筑面积测绘报告范本
- 校园物业考评表
- 2019版外研社高中英语选择性必修三单词默写表
评论
0/150
提交评论