孔德鳳, 韓秀玲, 陳 光, 任卓君(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 上海 201620)
?
實(shí)時(shí)同步協(xié)同虛擬實(shí)驗(yàn)平臺(tái)
孔德鳳, 韓秀玲, 陳 光, 任卓君
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 上海 201620)
針對(duì)協(xié)同虛擬實(shí)驗(yàn)平臺(tái)中多人協(xié)同實(shí)驗(yàn)時(shí)組員之間無(wú)法實(shí)時(shí)同步實(shí)驗(yàn)操作的問(wèn)題,提出將實(shí)驗(yàn)操作全部配置化的設(shè)計(jì)思想,并且在.NET平臺(tái)下,基于UDP協(xié)議,利用自行設(shè)計(jì)的連線算法,結(jié)合Socket技術(shù)、委托技術(shù)及C#編程語(yǔ)言,實(shí)現(xiàn)了協(xié)同實(shí)驗(yàn)時(shí)同組成員實(shí)時(shí)同步實(shí)驗(yàn)操作的功能。實(shí)踐結(jié)果表明,基于此功能的平臺(tái)能夠讓同組成員共同構(gòu)建實(shí)驗(yàn)拓?fù)?,?shí)時(shí)同步組員實(shí)驗(yàn)操作,查看設(shè)備實(shí)時(shí)的配置信息,從而滿(mǎn)足了協(xié)同虛擬實(shí)驗(yàn)平臺(tái)的實(shí)時(shí)同步多人操作的功能需求,學(xué)生可以同時(shí)操作同一項(xiàng)實(shí)驗(yàn),實(shí)時(shí)同步實(shí)驗(yàn)過(guò)程,最終同步完成實(shí)驗(yàn),很大程度上提高了虛擬實(shí)驗(yàn)的效率。
協(xié)同虛擬實(shí)驗(yàn); 實(shí)時(shí)同步; 操作配置化; 連線算法
虛擬實(shí)驗(yàn)室是一種基于VR虛擬現(xiàn)實(shí)技術(shù)、Web技術(shù)構(gòu)建的網(wǎng)絡(luò)化的開(kāi)放式虛擬教學(xué)系統(tǒng),是解決目前高校實(shí)驗(yàn)資源短缺、經(jīng)費(fèi)緊張等問(wèn)題的有效措施[1-2]。而建立在虛擬實(shí)驗(yàn)及遠(yuǎn)程協(xié)作理論與技術(shù)基礎(chǔ)上的多人協(xié)作虛擬實(shí)驗(yàn)室,是人們正在研究的一種新的虛擬實(shí)驗(yàn)?zāi)J?,它能夠?yàn)橛脩?hù)提供一個(gè)共享協(xié)作式的教學(xué)、學(xué)習(xí)和實(shí)驗(yàn)環(huán)境[3]。
本課題組根據(jù)高?!坝?jì)算機(jī)網(wǎng)絡(luò)”教學(xué)實(shí)際和本學(xué)院的實(shí)驗(yàn)教學(xué)需求,基于現(xiàn)實(shí)教學(xué)環(huán)境下的通信網(wǎng)絡(luò)實(shí)驗(yàn)室,研發(fā)了B/S架構(gòu)的遠(yuǎn)程虛擬實(shí)驗(yàn)平臺(tái),用戶(hù)只要通過(guò)瀏覽器,如IE,F(xiàn)irefox等,就可以不受時(shí)間、空間限制,隨時(shí)隨地進(jìn)行各種網(wǎng)絡(luò)實(shí)驗(yàn)[4]。然而該系統(tǒng)只具備單人虛擬實(shí)驗(yàn)室,而無(wú)允許協(xié)同操作的多人實(shí)驗(yàn)室,使得設(shè)備配置重復(fù)率高,實(shí)驗(yàn)效率低下,且系統(tǒng)不適用于一些大型復(fù)雜的實(shí)驗(yàn)。
針對(duì)這一問(wèn)題,本文基于自行提出的實(shí)驗(yàn)操作配置化的設(shè)計(jì)思想,利用自行設(shè)計(jì)的連線算法,結(jié)合UDP協(xié)議,Socket網(wǎng)絡(luò)技術(shù)、代理技術(shù)及加鎖法+消息隊(duì)列的并發(fā)控制方法[5-6]開(kāi)發(fā)了一個(gè)多人協(xié)同虛擬實(shí)驗(yàn)平臺(tái),此實(shí)驗(yàn)平臺(tái)具有多人共同操作實(shí)驗(yàn),同時(shí)構(gòu)建實(shí)驗(yàn)拓?fù)洌瑢?shí)時(shí)同步組員實(shí)驗(yàn)操作,查看設(shè)備實(shí)時(shí)配置信息等功能,大大提高了虛擬實(shí)驗(yàn)的效率。
本實(shí)驗(yàn)平臺(tái)前期開(kāi)發(fā)的“單人在線虛擬組網(wǎng)實(shí)驗(yàn)平臺(tái)”中一個(gè)虛擬實(shí)驗(yàn)過(guò)程的網(wǎng)絡(luò)拓?fù)浣貓D[7]如圖1所示。
圖1 單人虛擬實(shí)驗(yàn)過(guò)程的一個(gè)截圖
圖1是學(xué)生通過(guò)瀏覽器訪問(wèn)網(wǎng)站,進(jìn)行虛擬實(shí)驗(yàn)時(shí)的操作界面,實(shí)驗(yàn)過(guò)程中學(xué)生不能多人協(xié)作完成實(shí)驗(yàn),只能單人按照實(shí)驗(yàn)指導(dǎo)書(shū)的要求組建該網(wǎng)絡(luò)拓?fù)洳⑦M(jìn)行相應(yīng)配置,單人配置的設(shè)備操作重復(fù)率較高,而且不適于大型實(shí)驗(yàn)的完成。
實(shí)際上,一個(gè)網(wǎng)絡(luò)實(shí)驗(yàn)的完成,特別是大型復(fù)雜實(shí)驗(yàn)的完成需要多個(gè)組員的共同協(xié)作完成,協(xié)同功能實(shí)現(xiàn)的重點(diǎn)便是每個(gè)組員實(shí)驗(yàn)操作的實(shí)時(shí)同步。所謂“實(shí)驗(yàn)操作的實(shí)時(shí)同步”指的是:任何一個(gè)組員的實(shí)驗(yàn)操作結(jié)果顯示到自己平臺(tái)的同時(shí)也會(huì)顯示到其他組員的平臺(tái)上,同組成員同時(shí)完成一項(xiàng)實(shí)驗(yàn),任何一個(gè)組員都可以查看任何一個(gè)設(shè)備當(dāng)前實(shí)時(shí)的配置信息。根據(jù)本文提出的方法可以很好地解決這一問(wèn)題,同組學(xué)生通過(guò)“多人在線虛擬組網(wǎng)實(shí)驗(yàn)平臺(tái)”可以在一定的范圍內(nèi)實(shí)時(shí)同步的共同完成一項(xiàng)實(shí)驗(yàn)。
本文設(shè)計(jì)的多人協(xié)同虛擬實(shí)驗(yàn)室是以“計(jì)算機(jī)網(wǎng)絡(luò)”課程為背景,利用了Windows Forms的控件技術(shù)、C#開(kāi)發(fā)語(yǔ)言、Visual Studio 2008開(kāi)發(fā)工具以及SQL SERVER數(shù)據(jù)庫(kù)進(jìn)行虛擬實(shí)驗(yàn)程序設(shè)計(jì),并在實(shí)驗(yàn)操作配置化的創(chuàng)新思想下,利用前人未在虛擬實(shí)驗(yàn)中使用過(guò)的Socket網(wǎng)絡(luò)技術(shù)、代理技術(shù)結(jié)合自行設(shè)計(jì)的連線算法來(lái)實(shí)現(xiàn),具有多人同步構(gòu)建實(shí)驗(yàn)拓?fù)?,?shí)時(shí)同步實(shí)驗(yàn)操作,查看設(shè)備實(shí)時(shí)配置信息,提高工作效率等優(yōu)點(diǎn)。設(shè)計(jì)完成后將窗體控件生成的動(dòng)態(tài)鏈接庫(kù)(.dll)文件嵌入.NET網(wǎng)頁(yè)中,完成以上操作之后,學(xué)生便可通過(guò)瀏覽器輕松地訪問(wèn)網(wǎng)頁(yè),進(jìn)行虛擬實(shí)驗(yàn)操作[7]。
2.1 實(shí)驗(yàn)操作配置化
為實(shí)現(xiàn)同組成員實(shí)驗(yàn)操作及結(jié)果的實(shí)時(shí)同步,提出實(shí)驗(yàn)操作配置化的的設(shè)計(jì)思想,即實(shí)驗(yàn)中所有的實(shí)驗(yàn)操作包括構(gòu)建實(shí)驗(yàn)拓?fù)涠际菍?duì)于實(shí)驗(yàn)設(shè)備的配置,實(shí)驗(yàn)操作的結(jié)果也全部來(lái)自于實(shí)驗(yàn)設(shè)備的配置操作。
實(shí)驗(yàn)操作配置化的優(yōu)勢(shì)是:與真實(shí)“計(jì)算機(jī)網(wǎng)絡(luò)”的實(shí)驗(yàn)過(guò)程和目的相吻合,真實(shí)的實(shí)驗(yàn)過(guò)程中,為了防止實(shí)驗(yàn)設(shè)備端口的損壞,實(shí)驗(yàn)拓?fù)涞臉?gòu)建是通過(guò)對(duì)設(shè)備進(jìn)行配置而不是通過(guò)插拔連接線實(shí)現(xiàn)的,此方式既保護(hù)了設(shè)備,也讓學(xué)生學(xué)習(xí)到了有關(guān)交換機(jī)配置的知識(shí)。同時(shí),由于配置信息易于實(shí)時(shí)傳輸,為多人同步搭建實(shí)驗(yàn)拓?fù)溥@一問(wèn)題的解決提供了基礎(chǔ)。
2.2 實(shí)時(shí)同步配置信息
為了實(shí)現(xiàn)多人虛擬實(shí)驗(yàn)中實(shí)驗(yàn)操作的實(shí)時(shí)同步,在實(shí)驗(yàn)操作配置化的思想下,實(shí)時(shí)同步配置信息成為了實(shí)時(shí)同步實(shí)驗(yàn)的關(guān)鍵。本文基于UDP協(xié)議,使用Socket通訊技術(shù)將組員配置的虛擬實(shí)驗(yàn)設(shè)備信息廣播到其他組員對(duì)應(yīng)的虛擬實(shí)驗(yàn)設(shè)備上,并利用Delegate技術(shù)喚醒主窗體平臺(tái)將接收到配置信息,實(shí)時(shí)地同步到每個(gè)組員的操作平臺(tái)上,從而使每個(gè)組員的虛擬設(shè)備上都有了最新的實(shí)驗(yàn)配置信息,即實(shí)現(xiàn)了配置信息的實(shí)時(shí)同步。
2.2.1 基于UDP協(xié)議的Socket技術(shù)
Socket技術(shù)是開(kāi)發(fā)局域網(wǎng)通訊工具常使用的技術(shù),在C#中Socket類(lèi)用于連接管理,實(shí)現(xiàn)通信端套接字接口,同時(shí)它還定義了綁定、連接網(wǎng)絡(luò)端點(diǎn)以及傳輸數(shù)據(jù)的各種方法,提供處理端點(diǎn)連接傳輸?shù)燃?xì)節(jié)所需要的功能[8-11]。
本文使用Socket技術(shù),基于UDP協(xié)議,將配置信息當(dāng)做消息發(fā)送給同局域網(wǎng)的其他組員,從而實(shí)現(xiàn)配置信息的實(shí)時(shí)同步,此功能分為發(fā)送和接受兩部分,具體實(shí)現(xiàn)如下:
(1) 發(fā)送配置信息。組員在虛擬設(shè)備配置框中輸入配置信息,便觸發(fā)了textconf文本框的KeyPress事件,每次鍵盤(pán)輸入enter鍵,代表組員此句配置已經(jīng)完成,這時(shí)便會(huì)調(diào)用senddata函數(shù),使用Socket網(wǎng)絡(luò)技術(shù)將此句配置發(fā)送給本廣播組的所有成員;
(2) 接受配置信息。Platform窗體一運(yùn)行后便啟動(dòng)了Socket網(wǎng)絡(luò)技術(shù)中的監(jiān)聽(tīng)線程,監(jiān)聽(tīng)端口是否有發(fā)送來(lái)的配置信息,若有,便接收,處理后利用Delegate技術(shù)添加到操作平臺(tái)相應(yīng)的textcheck上,繼續(xù)監(jiān)聽(tīng);若沒(méi)有,繼續(xù)監(jiān)聽(tīng)。
2.2.2 委托(Delegate)技術(shù)
委托是一個(gè)類(lèi),它定義了方法的類(lèi)型,一旦為委托分配了方法,委托將與該方法具有完全相同的行為。委托允許傳遞一個(gè)類(lèi)的方法給另一個(gè)類(lèi)的對(duì)象,使得另一個(gè)類(lèi)的對(duì)象能夠調(diào)用這個(gè)方法[12-13]。
本文通過(guò)委托將監(jiān)聽(tīng)子線程接收到的配置信息添加到主線程的配置信息文本框中,使組員可以同步查看所有設(shè)備的實(shí)時(shí)配置信息,以了解到整個(gè)實(shí)驗(yàn)的進(jìn)度。部分主要代碼如下[14]:
delegate void del(string t);//聲明一個(gè)委托
private void prif1(string t1)
{
if (!InvokeRequired)//判斷是否在同一個(gè)線程中
{
textBox_check1.AppendText(t1);
}
else
{
del dele = new del(prif1);
Invoke(dele, new object[] { t1 });//執(zhí)行喚醒操作
}
}
2.3 連線算法
實(shí)驗(yàn)拓?fù)鋱D的構(gòu)建是實(shí)驗(yàn)的基礎(chǔ),目前協(xié)同實(shí)驗(yàn)平臺(tái)中實(shí)驗(yàn)拓?fù)涞臉?gòu)建是異步的,即組員輪流操作,導(dǎo)致組員被動(dòng),實(shí)驗(yàn)效率低下,協(xié)同的概念也沒(méi)有完全體現(xiàn)出來(lái)。對(duì)此,本文利用自行設(shè)計(jì)的連線算法實(shí)時(shí)同步同組成員構(gòu)建的實(shí)驗(yàn)拓?fù)洹?/p>
多人協(xié)同虛擬實(shí)驗(yàn)平臺(tái)的拓?fù)湫Ч麍D,如圖2所示。
圖2 多人協(xié)同虛擬實(shí)驗(yàn)拓?fù)淅龍D
圖2中,實(shí)驗(yàn)拓?fù)鋱D由本用戶(hù)和遠(yuǎn)程端組員合作完成,交換機(jī)一(左SW1)的連線是本用戶(hù)配置交換機(jī)一形成的,交換機(jī)二(右SW2)的連線是遠(yuǎn)程端組員配置交換機(jī)二形成的,兩者的結(jié)果都可以實(shí)時(shí)地顯示在實(shí)驗(yàn)平臺(tái)上。
2.3.1 連線算法的流程
由于實(shí)際實(shí)驗(yàn)中用戶(hù)搭建本實(shí)驗(yàn)組的網(wǎng)絡(luò)拓?fù)涫峭ㄟ^(guò)劃分vlan來(lái)實(shí)現(xiàn)的。在本文中將這一操作虛擬化的實(shí)現(xiàn)方法是:在用戶(hù)配置設(shè)備劃分好vlan后,利用實(shí)時(shí)同步配置信息技術(shù)相應(yīng)的改變本組所有成員的ConnectPoint數(shù)組值,用timerliner計(jì)時(shí)器根據(jù)ConnectPoint數(shù)組的值實(shí)時(shí)的刷新連線,以獲取最新的實(shí)驗(yàn)拓?fù)?,從而?shí)現(xiàn)與實(shí)際實(shí)驗(yàn)相同的實(shí)驗(yàn)操作,進(jìn)一步提高虛擬實(shí)驗(yàn)室的仿真程度。
本文設(shè)計(jì)的連線算法依據(jù)的是劃分vlan構(gòu)建網(wǎng)絡(luò)拓?fù)涞姆绞?,算法基本流程圖如圖3所示。
圖3 連線算法基本流程圖
圖3 中,實(shí)驗(yàn)拓?fù)涞墓餐瑯?gòu)建主要分為兩個(gè)方面,左側(cè)流程是根據(jù)用戶(hù)自己的操作步驟(包括選取并配置交換機(jī))進(jìn)行設(shè)備連線,右側(cè)流程是根據(jù)接受到的遠(yuǎn)程端組員的交換機(jī)配置信息實(shí)時(shí)的進(jìn)行設(shè)備連線。
2.3.2 連線算法流程的實(shí)現(xiàn)
針對(duì)圖3連線算法的基本流程,下面詳細(xì)的介紹每個(gè)階段的實(shí)現(xiàn)技術(shù)。
(1) 左側(cè)流程。首先是Router_Switch數(shù)組和ConnectPoint數(shù)組初始化,其中Router_Switch用來(lái)存放網(wǎng)絡(luò)設(shè)備名,ConnectPoint數(shù)組用來(lái)存放設(shè)備間的連線情況,Router_Switch數(shù)組初始化的值如表1所示。
表1 Router_Switch數(shù)組初始化
表1中i代表Router_Switch數(shù)組的索引值,j代表設(shè)備名稱(chēng)picturebox_j中的j變量。
由于線兩端連接的是網(wǎng)絡(luò)設(shè)備,所以ConnectPoint數(shù)組的橫縱索引值應(yīng)為設(shè)備名稱(chēng),本文為了方便實(shí)現(xiàn),將橫縱索引值設(shè)為設(shè)備名稱(chēng)在Router_Switch中對(duì)應(yīng)的索引值。ConnectPoint數(shù)組初始化依據(jù)實(shí)際實(shí)驗(yàn)室網(wǎng)絡(luò)設(shè)備的拓?fù)?,為了清晰表示設(shè)備連線關(guān)系,表2中第一行和第一列的值是ConnectPoint數(shù)組橫縱索引對(duì)應(yīng)于同索引號(hào)的Router_Switch數(shù)組值。
表2 ConnectPoint數(shù)組初始化
表2中,1代表橫縱坐標(biāo)設(shè)備之間有連線,0代表橫縱坐標(biāo)設(shè)備之間無(wú)連線。本文使用畫(huà)線技術(shù)畫(huà)出連線。
① 畫(huà)線的具體實(shí)現(xiàn)[15]為:
Pen myPen = new Pen(Color.DimGray, 1);//
② 畫(huà)筆的顏色
Graphics g = this.CreateGraphics();//
③ 初始畫(huà)一幅圖
g.DrawLine(myPen, Router_Switch[m].Location.X + 20, Router_Switch[m].Location.Y + 20, Router_Switch[n].Location.X + 20, Router_Switch[n].Location.Y + 20);//
根據(jù)設(shè)備位置畫(huà)線,在用戶(hù)開(kāi)始實(shí)驗(yàn)時(shí)timerliner計(jì)時(shí)器便開(kāi)始啟動(dòng),根據(jù)ConnectPoint數(shù)組和Router_Switch數(shù)組的值實(shí)時(shí)的刷新連線,此時(shí)用戶(hù)便有了一個(gè)初始化的實(shí)驗(yàn)界面。其中timerliner的Interval屬性值設(shè)為1,即每隔1s執(zhí)行一次tinerliner_Tick事件。ConnectPoint[m, n]的值不同時(shí)會(huì)有不同的顏色粗細(xì)的線代表現(xiàn)在設(shè)備連接的狀態(tài),ConnectPoint[m, n]值的不同含義如下:① 值為1代表設(shè)備之間有雙絞線,但并沒(méi)連通;② 值為2代表設(shè)備之間的連線已經(jīng)連通;③ 值為3代表設(shè)備之間存在虛擬的連線,即可以通過(guò)兩個(gè)及兩個(gè)以上的交換機(jī)連通,見(jiàn)圖4。
在整個(gè)實(shí)驗(yàn)初始化后用戶(hù)配置vlan構(gòu)建自己的網(wǎng)絡(luò)拓?fù)?,此時(shí)會(huì)根據(jù)配置信息響應(yīng)改變ConnectPoint數(shù)組的值,進(jìn)而改變了實(shí)驗(yàn)設(shè)備之間的連線狀態(tài)。實(shí)際的網(wǎng)絡(luò)設(shè)備劃分vlan必須在端口打開(kāi)之后進(jìn)行,因此虛擬實(shí)驗(yàn)中使用公共靜態(tài)數(shù)組undo來(lái)保存需要打開(kāi)的端口的狀態(tài),0代表未打開(kāi)不可配置vlan,1代表打開(kāi)可以進(jìn)行vlan的配置。用戶(hù)配置設(shè)備構(gòu)建實(shí)驗(yàn)拓?fù)涞暮诵拇a[16]如下:
圖4 ConnectPoint[m,n]值的含義
string a;
a=(textBox_conf4.GetLineFromCharIndex(textBox_conf4.
SelectionStart)).ToString();
int i = int.Parse(a);
if (e.KeyChar == 13)
{
if (textBox_conf4.Lines[i].Length < 21)
{
switch (textBox_conf4.Lines[i])
{
…
case "[SW2-vlan3]port E1/0/21 to E1/0/22":
if (undo[5] == 1 && undo[6] == 1)
{
textBox_conf5.AppendText(" ");
textBox_conf5.AppendText("[SW2-vlan3]");
ConnectPoint[0, 1] = 3;
ConnectPoint[4, 0] = 2;
ConnectPoint[4, 1] =2;
}
else
{
textBox_conf5.AppendText(" ");
textBox_conf5.AppendText("The port is closed!");
textBox_conf5.AppendText(" ");
textBox_conf5.AppendText("[SW2-vlan3]");
}
e.Handled = true;
break;
…
(2) 右側(cè)流程。在實(shí)驗(yàn)開(kāi)始后平臺(tái)便利用Socket 技術(shù)獲取其他成員的遠(yuǎn)程配置信息,并根據(jù)配置信息以左側(cè)流程相同的邏輯改變接受方的ConnectPoint數(shù)組值,timerliner計(jì)時(shí)器根據(jù)ConnectPoint數(shù)組的值實(shí)時(shí)刷新連線,進(jìn)而將發(fā)送方構(gòu)建的實(shí)驗(yàn)拓?fù)鋵?shí)時(shí)的同步到接受方的平臺(tái)上,從而實(shí)現(xiàn)多人協(xié)同實(shí)驗(yàn)的效果。
通過(guò)左右兩個(gè)流程實(shí)現(xiàn)同組組員共同構(gòu)建實(shí)驗(yàn)拓?fù)洌⑶颐總€(gè)組員都可實(shí)時(shí)同步到最新的實(shí)驗(yàn)拓?fù)鋱D。
2.4 多人協(xié)同實(shí)驗(yàn)的實(shí)現(xiàn)實(shí)例
以上詳細(xì)的介紹了實(shí)時(shí)同步協(xié)同虛擬實(shí)驗(yàn)的實(shí)現(xiàn)過(guò)程,下面以“華為協(xié)同rip路由選擇協(xié)議實(shí)驗(yàn)”作為演示實(shí)例來(lái)驗(yàn)證設(shè)計(jì)的有效性。
首先用戶(hù)A注冊(cè)登錄,選擇“rip路由選擇協(xié)議實(shí)驗(yàn)”并選擇創(chuàng)建rip實(shí)驗(yàn)組。
用戶(hù)B注冊(cè)登錄,選擇加入rip實(shí)驗(yàn)組,進(jìn)入實(shí)驗(yàn)平臺(tái)后A、B分別選擇不同的SW(交換機(jī))進(jìn)行實(shí)驗(yàn),A選擇SW1,B選擇SW2,然后進(jìn)行預(yù)先計(jì)劃好的實(shí)驗(yàn)拓?fù)錁?gòu)建,搭建好實(shí)驗(yàn)拓?fù)渲蟊氵x擇不同路由器并對(duì)其進(jìn)行配置直至完成實(shí)驗(yàn)。用戶(hù)A的實(shí)驗(yàn)中間過(guò)程如圖5所示。
圖5 實(shí)驗(yàn)過(guò)程圖
圖5中實(shí)驗(yàn)拓?fù)涫茿、B共同搭建的,右側(cè)“配置窗口”中是用戶(hù)A對(duì)SW1的配置信息,左側(cè)“查看配置”窗口用來(lái)顯示遠(yuǎn)程用戶(hù)的配置信息,默認(rèn)值是空。由于用戶(hù)B此時(shí)正在配置交換機(jī)(SW2),所以對(duì)于用戶(hù)A來(lái)說(shuō)交換機(jī)SW2是不可配置的,點(diǎn)擊提示信息“正在配置,請(qǐng)點(diǎn)擊查看代碼”即可在左側(cè)“查看配置”窗口中查看用戶(hù)B的當(dāng)前配置信息。中間的拓?fù)鋱D是用戶(hù)A、B共同完成的拓?fù)鋱D,灰色線代表設(shè)備間有雙絞線但是端口未打開(kāi),紫色線代表設(shè)備間有雙絞線端口已打開(kāi),紅色線代表設(shè)備間比較直觀的虛連接。此結(jié)果表明,本協(xié)同虛擬實(shí)驗(yàn)平臺(tái)允許多人共同完成一個(gè)實(shí)驗(yàn),不僅實(shí)現(xiàn)了組員同步構(gòu)建本組的實(shí)驗(yàn)拓?fù)?,且在這個(gè)過(guò)程中每個(gè)組員的平臺(tái)都具有最新的協(xié)同實(shí)驗(yàn)狀態(tài),每個(gè)組員都可以查看設(shè)備的實(shí)時(shí)配置信息,大大提高了實(shí)驗(yàn)效率。
本文研究并開(kāi)發(fā)了實(shí)時(shí)同步協(xié)同虛擬實(shí)驗(yàn)平臺(tái)。實(shí)例驗(yàn)證,該平臺(tái)可以滿(mǎn)足多人實(shí)時(shí)同步完成同一實(shí)驗(yàn)的需求,提高了大型和復(fù)雜實(shí)驗(yàn)的工作效率。
[1] 三維仿真.虛擬實(shí)驗(yàn)室[EB/OL].(2012-09-18) [2012-09-18].http://baike.baidu.com/link?url=v6uyyLcStN0b9tLCOl1ygdCr-FCeJQn9toy1VS8CbJXdLV7OFrwGMSo4q7ikrlKSoO2AQuK0Hf5DQ-LUN79ANnlK
[2] 張偉欣.虛擬計(jì)算機(jī)網(wǎng)絡(luò)組網(wǎng)平臺(tái)的設(shè)計(jì)及虛擬現(xiàn)實(shí)技術(shù)的應(yīng)用[D].上海:東華大學(xué),2008.
[3] 馮 琦.基于互聯(lián)網(wǎng)的協(xié)同實(shí)驗(yàn)的研究[D].西安:西安電子科技大學(xué),2006.
[4] 潘 淼,韓秀玲,陳 光.在線虛擬網(wǎng)絡(luò)實(shí)驗(yàn)系統(tǒng)命令行提示技術(shù)的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件,2013,30(9):327-331.
[5] 范 志.實(shí)時(shí)協(xié)同編輯系統(tǒng)中并發(fā)控制算法的研究[D].蘭州:蘭州理工大學(xué),2009.
[6] 劉新福,王光彩,代雯君,等.集中式CSCW環(huán)境中對(duì)實(shí)時(shí)共享對(duì)象的并發(fā)控制算法[J].小型微型計(jì)算機(jī)系統(tǒng),2002,23(6):667-672.
[7] 戴維燁,韓秀玲,陳 光.利用動(dòng)態(tài)控件技術(shù)實(shí)現(xiàn)自由組網(wǎng)拓?fù)錁?gòu)建[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(7):119-123.
[8] 馬艷芳.協(xié)同虛擬實(shí)驗(yàn)的研究與設(shè)計(jì)[D]. 北京:北京郵電大學(xué),2011.
[9] 王繼剛,顧國(guó)昌,徐立峰,等.可靠UDP數(shù)據(jù)傳輸協(xié)議的研究與設(shè)計(jì)[J]. 計(jì)算機(jī)工程與應(yīng)用,2006,42(15):34-37.
[10] 黃海芳,宋筱媛,許 聰.基于UDP廣播的局域網(wǎng)聊天室設(shè)計(jì)[J]. 福建電腦,2008,24(4):70-74.
[11] Sunev.基于C 的UDP協(xié)議的同步實(shí)現(xiàn)[EB/OL].(2012-08-10)[2012-08-10].http://www.cnblogs.com/sunev/archive/2012/08/08/2627247.html
[12] 王小科.C#開(kāi)發(fā)實(shí)戰(zhàn)寶典[M].北京:清華大學(xué)出版社,2010.
[13] 我已經(jīng)飄過(guò).C#委托 [EB/OL].(2014-05-20). http://baike.baidu.com/view/1935199.htm?fr=aladdin
[14] Wei-Meng Lee. C# 2008 Programmer’s Reference[M]. New Jersey:Wiley Publishing,Inc, 2009.
[15] Jesse Liberty,Donald Xie.Programming C# 3.0 5th Edition[M]. Massachusetts:O’Reilly Media, Inc , 2009.
[16] 張 青,郭亞萍. C#編程思想與實(shí)踐[M]. 北京:冶金工業(yè)出版社,2002.
如果你問(wèn)一個(gè)善于溜冰的人怎樣獲得成功時(shí),他會(huì)告訴你:“跌倒了,爬起來(lái)。”這就是成功。
——牛頓
Real-time and Synchronous Collaborative Virtual Experiment Platform
KONGDe-feng,HANXiu-ling,CHENGGuang,RENZhuo-jun
(College of Information Sciences and Technology, Donghua University, Shanghai 201620, China)
When it comes to the issue that experimental operation can not be real-time synchronization in collaborative virtual experiment platform, the paper proposes the design ideas that make experimental operation configured. The design applies a connectivity algorithm, Socket technology, delegate technology and C# which based on .Net platform, and achieves a real-time synchronization of experimental operation among team members. It turns out that the platform makes joint building of experimental topology and real-time synchronization operation in one team, and meets the functional needs of real-time virtual experiment platform.
virtual collaborative experiment; real-time synchronization; operation configuration; connectivity algorithms
2014-07-25
上海市教育科學(xué)2011年度重點(diǎn)項(xiàng)目(A1119)
孔德鳳(1990-),女,山東臨沂人,碩士,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)。Tel.:18817842331; E-mail: kdf156@126.com
陳 光(1957-),男,廣東汕頭人,教授,碩士生導(dǎo)師,研究方向:無(wú)線移動(dòng)通信,電磁場(chǎng)理論。
Tel.: 13651990193; E-mail: gchen@dhu.edu.cn
TP 393.09
A
1006-7167(2015)02-0117-05