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

时间:2022-09-27 07:24:17

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

[摘要] 本文主要对虚拟信息类型和通信方式进行分析,并根据本文所要设计完成的计算机组成原理的特征,在现有的通信机制中选择符合系统通信要求的通信机制,并将其封装成一个子通信子系统,它可以支持多种信息类型和通信方式。

[关键词] 虚拟 通信子系统 设计 实现

用现代计算机技术研究虚拟实验室的应用,是近几年国内外实验教学研究的热点。虚拟实验室就是以计算机网络为核心,将虚拟仪器通过网络连接起来,以实现数据采集、分析和远程操作的一个系统,它具有透明性、资源共享性、互操作性、用户自主性、扩展性以及安全性等特点,是传统实验室无法比拟的。通信与调度管理是构建虚拟教学实验室系统的关键问题,各种数据的传输需要一个良好的通信机制来保证,调度管理则是系统能够有序化工作的关键。

一、虚拟教学实验室通信子系统的通信机制选择

在当下流行的多种通信方式中,共享的通信方式、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分析协议头,转发客户消息。

参考文献:

[1]曾明李建军:网络工程与网络管理[M].北京:电子工业出版社,2001

[2]杨宝德倪宏 蒋凡:多业务管理系统模型研究及实现[J].现代电信术,2005(8)

[3]罗军舟黎波涛杨明:TCP/IP协议及网络编程技术[M]. 北京:清华大学出版社,2004.10

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:网站价值评估初探 下一篇:商用低成本低功耗GPS手持机开发