位置:首页 > 其它资料

多信息和通信方式虚拟通信系统研究

2020-02-06发布者:青青草大小:35.00 KB 下载:0

[摘要]本文主要对虚拟信息类型和通信方式进行分析,并根据本文所要设 计完成的计算机组成原理的特征,在现有的通信机制中选择符合系统通信要求 的通信机制,并将其封装成一个子通信子系统,它可以支持多种信息类型和通 信方式。 [关键词]虚拟,通信子系统,设计,实现 用现代计算机技术研究虚拟实验室的应用,是近几年国内外实验教学 研究的热点。虚拟实验室就是以计算机网络为核心,将虚拟仪器通过网络连接 起来,以实现数据采集、分析和远程操作的一个系统,它具有透明性、资源共 享性、互操作性、用户自主性、扩展性以及安全性等特点,是传统实验室无法 比拟的。通信与调度管理是构建虚拟教学实验室系统的关键问题,各种数据的 传输需要一个良好的通信机制来保证,调度管理则是系统能够有序化工作的关 键。 一、虚拟教学实验室通信子系统的通信机制选择 在当下流行的多种通信方式中,共享的通信方式、NetBIOS 和 MailSlot 的可靠性差。DDE,WM_COPYDATA 和剪贴板是同一台计算机中不同应用程序 之间的进行数据交换的方式。Pipe 的速度较慢,而 MailSlot 最大的缺陷是不可 靠。Sockets 由于是工作在通信的底层,实现起来比较复杂,但是如果是工作在 Windows 平台之上,则不存在这个问题,因为微软公司提供了相应的控件。 RPC 对外界屏蔽了通信细节,具有较好的结构化和抽象能力,它是分布在不同 处理机上的程序进行合作的一种高级机制,并被广泛地用于分布式操作系统、 分布式数据库和客户/服务器计算机领域中。CORBA 适用于异构的、大规模的 分布式系统。它们各有各的优缺点,没有哪一种是万能的。因此,只有在合适 的场合采用合适的方案,才是最好的解决办法。 由于基于局域网的虚拟教学实验室系统来说,主要是运行在 Windows 平台之上,并结合本文所设计的计算机组成原理虚拟实验室的特点,因此我们 使用 Socket 来实现系统的通信。 二、虚拟教学实验室通信子系统信息类型与通信方式设计 由于虚拟实验室需要支持不同的信息流,如实验数据、白板信息等, 还要支持不同的通信方式,如单播、组播和广播,从而实现学生可以单独实验、 协同实验和文本交流等功能。所以,虚拟实验室必须解决多种消息类型和多种 通信方式这一基本应用需求。 1.系统的信息类型设计。在虚拟实验室系统当中,客户端与服务器端之 间存在着大量的信息交互,这些信息的类型多种多样,而且这些信息对网络的 通信有不同的要求,有些对实时性要求较高,有些则对顺序和可靠性要求较高。 (1)数据文本信息。主要指用户所发送的实验数据和服务器处理后的实 验数据。在本系统中,客户端将用户的操作及实验数据以文本文件的形式传送 给应用服务器,服务器进行处理后,也是以文本文件的形式将处理结果传回客 户端。由于该数据量不是很大,所以通常用 TCP 形式实现。 (2)白板信息。白板可以使每一个实验成员利用图形、文字等协同合作 一个实验。传送的白板数据是对绘图对象的操作,其先后相关性体现在各个绘 图对象的属性变化上,任何数据的传输速度如果过慢的话,将体现不出协同和 合作的特性,因此必须保证传送的实时性,通常以 UDP 的形式实现。 (3)音频/视频信息。这两种信息对于传输的实时性要求较高,对可靠性 要求较低,因此通常以 UDP 的形式实现。但是为了提高可靠性,要在 UDP 的 基础上加上质量保证控制机制。 (4)文字信息。文字信息提供以文字形式交流的手段,多个用户进行实 验时,可以互相进行简单的文字交流,在虚拟实验室当中,文字信息数据量小, 以 TCP 形式实现。控制信息:控制信息是实现协同和管理的根本保证,必须以 可靠的形式传输。由于其数据量很小,所以通常以 TCP 形式实现。 2.系统的通信方式设计。在虚拟实验室当中,服务器和客户端在通信中 要求能够实现单播、组播和广播。单播是将数据从一个发送点传输到一个接收 点,是点到点的通信方式。广播是将数据发送给网络中的所有节点,是点到所 有节点的通信方式。组播是介于单播与广播之间的一种点到点的通信方式,它 是将数据从一个节点发送给特定“组”内的所有节点。 图 1 单播通信结构示意图 (1)单播通信方式。单播通信,就是一个用户在同一时间只能与另一用 户进行通信。其拓扑结构如图 1 所示。当用户 1 向用户 3 发送信息时,用户在 信息包中声明需要服务器提供点对点通信方式,同时在信息包中必须提供用户 3 的 IP 地址。这样服务器就为双方建立了通信连接,信息就可以在两个用户之 间传递,而网上其他用户是无法得知信息内容的。图中虚线表明信息的流动方 向。 单独完成某个实验时,不需要和其他人合作完成,每个人各自完成自 己所选的实验,而互不干扰。因此,在这种情况下,采用单播的通信方式。 (2)组播通信。组播通信,就是一个用户在同一时间可以与其它任意指 定用户之间进行通信,被指定的用户数量必须大于 2。其拓扑结构如图 2 所示。 在该图中,用户 1 通过服务器同用户 2、用户 4 建立链路。因此用户 1 发送的信息可以被用户 2 和用户 4 同时接收。用户 1 在发送信息时必须在信息 包中表明多点传送方式,以及接收该信息的用户地址。 在本系统中,如果一个人需要合作完成某个实验,也称协同实验,对 于某个人在客户端所作的实验设计编辑操作,先由虚拟实验平台将它转换为消 息数据,在本地子网进行组播。于是,合作的组内成员客户端可以直接收到组 播的消息数据。 图 2 组播通信结构示意图 (3)广播方式。广播方式就是,一个用户发出的信息包,被发往网上所 有用户。其通信方式如图 3 所示。在本系统中,服务器需要向所有的客户端发 出一些简单的消息,在这样的情况下,使用广播方式可以减轻服务器的负载, 提高系统的效率。 图 3 广播方式结构图 3.通信子系统的框架设计。根据虚拟教学实验室系统的不同要求,为了 屏蔽底层通信方式的差异,提供具有特定服务质量的通信服务。通过以上对多 种信息类型和多种通信方式的分析,设计了一个系统,称为通信子系统,它提 供对单播、组播和广播的支持,并且能够完成系统客户端和服务器端之间的通 信。 图 4 通信子系统框架 由于在本系统中,虚拟实验模块所产生的数据无论是用户的注册/登录 信息还是实验据信息,都是文本数据,都采用 TCP 来实现。在协同实验当中, 白板模块所产生的信息有可能是文字信息,也有可能是图像信息,在本文中我 们采用 UDP 的形式来实现。控制信息和文字信息都是以 TCP 来实现的。 三、虚拟实验室通信子系统的功能实现 1.信息处理模块。(1)阻塞和非阻塞通信原语。阻塞原语(也叫同步原 语),当一个进程执行“发送”调用,信息正在发送时,执行“发送”原语的进程将 被阻塞(即挂起)。系统调用“发送”命令之后的代码不能执行直到信息已经发 送出去。同样的道理,对于“接收”命令,在没有实际收到信息之前是不能返回 调用进程的,而执行“接收”原语的进程一样要挂起等待,哪怕等无限长时间。 在虚拟教学实验室系统中,“接收”和“发送”进程都是与特定的端口相连接的。也 就是说,接收进程只能收到发送与之相关的特定端口的信息,对于其他信息则 无法接收。同样,“发送”进程也只能将信息发送到特定的端口(一般是接收方 的接收端口)。 与阻塞原语相对应的是非阻塞原语(也叫异步原语)。在这种原语中, 发送进程调用“发送”命令后不挂起,而是立即将控制权交给调用进程。非阻塞 原语的优点是发送进程可以与信息的发送并行操作。然而,使用非阻塞原语在 获得良好性能的同时也带来了缺点,这就是发送进程必须等待信息已经正确发 送出去,才能修改发送缓冲区中的数据,否则可能带来严重的正确性问题。 对于这个问题可以有两种解决方案。一是将发送信息拷贝到信息缓存 区,从而允许发送进程继续运行。第二种方案是当信息发送成功后中断发送进 程,以便告之它可以继续使用发送缓冲区,这种方法不需要信息的拷贝,从而 节省时间。但用户级的中断会使程序变得较复杂,并会引入竞争条件,使得程 序的执行不具有可重复性。在一般情况下,第一种选择是最好的,容易理解而 且实现起来也最简单,不需要另外的缓冲区,可以很快地发送信息。另外,如 果对于某些应用必须将处理和信息传输并行操作,那么,第二种是最好的。 (2)系统的两种通信模式。在本系统中,客户端和服务器端之间的通信 我们采用了基于 TCP/IP 协议族上的 TCP 和 UDP 协议,该协议是利用传输层上 的 Socket 构建的 TCP 协议和 UDP 协议根据虚拟教学实验室系统的特点以及上 面对信息流的分析,其实现方式包括以太网下 TCP 和 UDP 的 Socket 两种通信 模式,在本系统中,由于信息类型不同,我们使用基于 TCP 的 Socket 来完成对 实验数据这些数据的传输,用基于 UDP 的 Socket 来完成对白板和控制信息的 传输。 2.系统管理模块。在虚拟教学实验室系统中,由于存在多个客户同时访 问服务器的可能性,如果有多个用户同时访问服务器端,那么就会出现多个线 程,那么就必须对这些线程进行统一的管理,要为所有的用户维护接收和发送 线程,还必须对这些用户的线程进行调度,使这些线程按照一定的策略运行, 维护着系统的运行。服务端还必须有一个主控线程负责对用户列表进行初始化, 建立各个通信中需要用到的套接字,创建控制线程、白板转发线程:负责监听 来自客户端的建立控制连接或白板连接的请求,有请求到来时建立通信连接。 3.应用接口。应用接口实现通信子系统与应用层程序的交互。它包括两 方面内容,一是应用程序的编写应遵循通信子系统所规定的标准;二是应用程 序可以通过通信子系统提供的应用程序接口使用通信子系统。应用通信子系统 构建虚拟教学实验室系统的目的是为了满足系统对开放性、实时性、灵活性、 可扩充性和易操作性的要求。 应用层可以通过通信子系统提供的应用程序接口使用通信子系统。在 给用户使用时,将接口的内部实现过程隐藏,提供类似 Socket 编程的外部接口, 其应用接口如下: addUsers():该函数以用户信息为参数。主要功能是给协议字段中 的 TON,METHOD 标志和 USERINFO 赋值。然后调用 setHead 设置协议头。 send():该函数以消息为参数。主要功能是调用 addHead 给消息加 上协议头,调用 reallysend 向服务器端发送消息包。 read():该函数以消息包为参数。主要功能是接收服务器发来的消 息包,并调用 protocol 进行对该信息包解析。 Sendservermsg():以消息和用户信息为参数。内部处理过程:调 用 addhead 给消息打包,调用 reallySend 发送服务器与客户端直接交流的消息 包。 sendusrmsg():以消息包为参数。内部处理过程:接受消息包,调 用 protocol 分析协议头,转发客户消息。
温馨提示:当前文档最多只能预览 3 页,此文档共6 页,请下载原文档以浏览全部内容。如果当前文档预览出现乱码或未能正常浏览,请先下载原文档进行浏览。
发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

下载需知:

1 该文档不包含其他附件(如表格、图纸),本站只保证下载后内容跟在线阅读一样,不确保内容完整性,请务必认真阅读

2 除PDF格式下载后需转换成word才能编辑,其他下载后均可以随意编辑修改

3 有的标题标有”最新”、多篇,实质内容并不相符,下载内容以在线阅读为准,请认真阅读全文再下载

4 该文档为会员上传,版权归上传者负责解释,如若侵犯你的隐私或权利,请联系客服投诉

返回顶部