張愛科
(柳州職業(yè)技術(shù)學(xué)院,廣西 柳州 545006)
網(wǎng)絡(luò)編程實驗對實驗環(huán)境要求比較高,傳統(tǒng)的網(wǎng)絡(luò)編程都是直接讓用戶在不同的程序開發(fā)環(huán)境中進行實驗開發(fā)。但是由于網(wǎng)絡(luò)編程應(yīng)用的開發(fā)往往需要大量的基礎(chǔ)代碼的實現(xiàn),使得用戶在開發(fā)網(wǎng)絡(luò)程序應(yīng)用的時候,需要花費大量的時間和精力在設(shè)計和完成與網(wǎng)絡(luò)接口關(guān)系并不密切的程序代碼上,從而提高了網(wǎng)絡(luò)編程的實驗門檻。從目前的研究成果來看,當(dāng)前對網(wǎng)絡(luò)編程實驗環(huán)境的研究更多的是對一些基礎(chǔ)環(huán)境的建設(shè),而對如何降低網(wǎng)絡(luò)編程實驗門檻,更好地輔助實驗者進行網(wǎng)絡(luò)編程實驗所開展的工作并不多。因此本文針對這一現(xiàn)狀提出的基于計算面向 TCP/IP協(xié)議的網(wǎng)絡(luò)編程實驗平臺,通過對實驗過程的研究和分析,設(shè)計真正有助于輔助實驗者進行網(wǎng)絡(luò)編程實驗的相關(guān)功能模塊,降低網(wǎng)絡(luò)編程實驗的開發(fā)難度[1-2]。
網(wǎng)絡(luò)編程實驗平臺的設(shè)計目標(biāo)是為實驗者提供網(wǎng)絡(luò)編程開發(fā)調(diào)試的實驗環(huán)境,降低實驗者進行網(wǎng)絡(luò)編程開發(fā)實驗的難度,盡可能有效地輔助實驗者更為容易開展網(wǎng)絡(luò)編程實驗。網(wǎng)絡(luò)編程實驗開發(fā)平臺的設(shè)計原理,是通過一個后端程序運行平臺為實驗者進行網(wǎng)絡(luò)編程實驗,搭建程序編寫的主體框架,根據(jù)實驗者的實驗內(nèi)容和實驗?zāi)康?,在整個實驗框架中空出部分程序代碼,以函數(shù)接口的形式由實驗者完成特定的實驗代碼。在實驗過程中,要求實驗者完成的部分函數(shù)接口清晰,變量定義明確,函數(shù)功能描述準(zhǔn)確,實驗者根據(jù)實驗平臺所要求完成的部分函數(shù)的編程,進行網(wǎng)絡(luò)編程開發(fā)。實驗者完成特定函數(shù)的編寫之后,網(wǎng)絡(luò)編程實驗平臺能夠?qū)⑾到y(tǒng)預(yù)先產(chǎn)生的網(wǎng)絡(luò)編程相關(guān)代碼與實驗者提交的函數(shù)模塊合為一體,進行程序的編譯,而且在網(wǎng)絡(luò)實驗平臺中能夠?qū)Τ绦虻倪\行過程進行單步跟蹤調(diào)試。根據(jù)調(diào)試的需求不一樣,可以提供基于指令的單步和基于函數(shù)過程的單步調(diào)試形式,也可以為實驗者提供靈活多樣的斷點管理[3-4]。同時,實驗者使用該實驗平臺進行單步調(diào)試的過程中,能夠?qū)⒊绦蜻\行過程中的相關(guān)變量以及程序運行時內(nèi)存的相關(guān)信息進行輸出,給用戶提供一個與真實的網(wǎng)絡(luò)編程調(diào)試環(huán)境完全一致的實驗環(huán)境。根據(jù)網(wǎng)絡(luò)編程實驗平臺的設(shè)計原理,網(wǎng)絡(luò)編程實驗平臺在設(shè)計過程中,主要解決了問題有:網(wǎng)絡(luò)編程總體程序框架的自動生成、基本函數(shù)的定義以及函數(shù)之間的變量傳遞,除此之外還需要實現(xiàn)網(wǎng)絡(luò)編程程序的調(diào)試分析環(huán)境。本文將針對網(wǎng)絡(luò)編程實驗平臺實現(xiàn)過程中所涉及的這些問題,分別予以分析和實現(xiàn)。
根據(jù)本文設(shè)計的網(wǎng)絡(luò)編程實驗平臺設(shè)計原理,本文設(shè)計的網(wǎng)絡(luò)編程實驗平臺的組成結(jié)構(gòu)如圖1所示。整個網(wǎng)絡(luò)編程實驗平臺分為前端和后端兩個部分。后端是網(wǎng)絡(luò)編程實驗平臺實現(xiàn)的基礎(chǔ),其主要是根據(jù)前端所選擇的網(wǎng)絡(luò)編程實驗內(nèi)容和實驗?zāi)康?,自動地產(chǎn)生網(wǎng)絡(luò)編程實驗程序。網(wǎng)絡(luò)編程實驗平臺后端產(chǎn)生完整的一個網(wǎng)絡(luò)編程實驗的程序之后,根據(jù)程序的組成框架以及實驗者的實驗?zāi)康模瑢υ摮绦蚩蚣苤械哪承╆P(guān)鍵的程序模塊進行刪減,而只對實驗者提供這些程序模塊的函數(shù)名稱、函數(shù)接口以及函數(shù)功能的描述。之后,網(wǎng)絡(luò)編程實驗平臺的后端將產(chǎn)生的程序主體結(jié)構(gòu)以及空缺的函數(shù)名稱及函數(shù)接口描述,同時發(fā)布給網(wǎng)絡(luò)編程前端。網(wǎng)絡(luò)編程的前端通過接收后端傳遞過來的網(wǎng)絡(luò)編程代碼,將在一個虛擬的程序調(diào)試環(huán)境中完成網(wǎng)絡(luò)編程開發(fā)實驗,實驗者在該環(huán)境下所看到的網(wǎng)絡(luò)編程界面與在傳統(tǒng)的編程環(huán)境中看到的界面是完全一致的。本文在設(shè)計過程中,通過將Visual C++編程內(nèi)核,完整地移植到本文設(shè)計的實驗平臺中,使得用戶在該實驗平臺的操作環(huán)境,完全繼承了 Visual C++的編程應(yīng)用環(huán)境[5]。
圖1 網(wǎng)絡(luò)編程實驗平臺設(shè)計原理
從圖2以看出,在網(wǎng)絡(luò)編程前端中主要會包括標(biāo)準(zhǔn)的庫函數(shù)、程序開發(fā)接口、程序調(diào)試模塊以及用戶實驗操作界面以及用戶程序評價模塊。在所有這些功能模塊中,程序開發(fā)接口和調(diào)試環(huán)境是網(wǎng)絡(luò)編程實驗平臺前端的核心模塊。其中調(diào)試環(huán)境通過繼承Visual C++的內(nèi)核進行實現(xiàn),能夠為用戶提供單步跟蹤的調(diào)試功能,基于過程的單步調(diào)試功能以及程序斷點設(shè)置功能。在程序運行過程中應(yīng)用Visual C++內(nèi)核所提供的程序運行過程中變量輸出等功能,能夠?qū)崿F(xiàn)對網(wǎng)絡(luò)編程實驗中涉及到的局部變量和全局變量進行觀測。該模塊主要是為輔助用戶進行網(wǎng)絡(luò)編程開發(fā)所提供的輔助性功能,通過這兩個模塊能夠讓用戶更加清晰地看到整個編程實驗中,程序的總體框架以及程序所包含的所有函數(shù),通過函數(shù)之間的調(diào)用關(guān)系又可以清晰地看到函數(shù)與函數(shù)之間的邏輯關(guān)系,以及所有的函數(shù)是如何通過相互之間的參數(shù)傳遞有機地組合在一起,完成特定的程序功能。網(wǎng)絡(luò)編程實驗平臺中的程序組成框架示意圖是通過對網(wǎng)絡(luò)編程程序中的源碼進行動態(tài)的掃描,實時檢測當(dāng)前運行的實驗程序總體結(jié)構(gòu),對當(dāng)前實驗程序中的所有函數(shù)進行監(jiān)測,形成當(dāng)前正在編程開發(fā)的實驗程序組成結(jié)構(gòu)。而函數(shù)之間的依賴關(guān)系則是通過掃描程序內(nèi)函數(shù)之間的調(diào)用關(guān)系以及跟蹤參數(shù)的傳遞過程所形成的函數(shù)之間調(diào)用關(guān)系圖。通過這兩個模塊的實現(xiàn),能夠有力地輔助用戶開發(fā)相應(yīng)的網(wǎng)絡(luò)程序,降低網(wǎng)絡(luò)編程的難度。
圖 2 網(wǎng)絡(luò)編程實驗平臺組成結(jié)構(gòu)
網(wǎng)絡(luò)編程實驗平臺后端的開發(fā)與設(shè)計是整個平臺實現(xiàn)的重要基礎(chǔ)。由于網(wǎng)絡(luò)編程實驗平臺的后端負責(zé)程序總體框架的自動產(chǎn)生,因此對后端的開發(fā)與設(shè)計是整個實驗平臺開發(fā)的關(guān)鍵之處。本文在設(shè)計網(wǎng)絡(luò)編程實驗平臺后端過程中主要分以下三個子模塊進行開發(fā)和實現(xiàn)[6-7]。
網(wǎng)絡(luò)編程實驗的目的是為了讓實驗者進行網(wǎng)絡(luò)編程實驗。傳統(tǒng)的實驗過程是實驗者根據(jù)其實驗?zāi)康暮蛯嶒瀮?nèi)容從零開始,完全由實驗者去搭建整個程序的框架,最終實現(xiàn)特定的網(wǎng)絡(luò)編程功能。在傳統(tǒng)的網(wǎng)絡(luò)編程實驗過程中,由于每個網(wǎng)絡(luò)應(yīng)用程序都需要大量的基礎(chǔ)功能的代碼來實現(xiàn),因此實驗者為了實現(xiàn)某一特定的功能,不得不開發(fā)大量的相關(guān)的基礎(chǔ)源碼,使得開發(fā)的進度非常慢,而且大幅度提高了網(wǎng)絡(luò)編程實驗的難度。根據(jù)本文設(shè)計的網(wǎng)絡(luò)編程實驗平臺的設(shè)計原理,在實驗過程中,將由系統(tǒng)自動去產(chǎn)生網(wǎng)絡(luò)編程應(yīng)用的基礎(chǔ)代碼,而只由實驗者完成關(guān)鍵部分的少量代碼的開發(fā)與實現(xiàn)。本文在設(shè)計過程中,設(shè)計的如圖3示的網(wǎng)絡(luò)應(yīng)用程序框架自動產(chǎn)生流程。首先根據(jù)用戶選取的網(wǎng)絡(luò)編程實驗功能,自動地產(chǎn)生與該實驗功能相對應(yīng)的程序抽象功能描述,然后根據(jù)程序抽象功能描述,在網(wǎng)絡(luò)編程實驗數(shù)據(jù)庫中提取相應(yīng)的程序流程和程序框架,而程序流程在提取過程中又自動地在基本的函數(shù)庫中提取相應(yīng)的函數(shù)體,拼接形成目標(biāo)程序框架,最終將所形成的程序框架進行輸出。整個程序框架的自動產(chǎn)生過程中,標(biāo)準(zhǔn)的程序數(shù)據(jù)庫是實現(xiàn)的關(guān)鍵,一般通過預(yù)先設(shè)置的方式存儲于程序數(shù)據(jù)庫中[8]。
圖3 網(wǎng)絡(luò)編程實驗平臺程序產(chǎn)生過程
從本文設(shè)計的網(wǎng)絡(luò)編程主體程序框架自動產(chǎn)生流程可以看出,所有的程序自動產(chǎn)生之后,都需要通過調(diào)用基本的函數(shù)來實現(xiàn),而對于網(wǎng)絡(luò)編程實驗過程中,哪些函數(shù)可以作為基本函數(shù),是可以通過預(yù)先對實驗內(nèi)容進行分析,以及結(jié)合長期的網(wǎng)絡(luò)編實驗程經(jīng)驗予以確定。本文在設(shè)計過程中建立了類似于樹形的基本函數(shù)關(guān)系結(jié)構(gòu),即處于最底層的是最基本的函數(shù)體,完成功能最為單一的原子操作,而在基本的函數(shù)體的上一層,可以定義粒度更高一級的基本函數(shù)體。所有基本函數(shù)的定義,在系統(tǒng)的設(shè)計初期,由設(shè)計者予以完成。而且在后期的運行過程中,基本函數(shù)的定義還可以由用戶自行添加。用戶所添加的基本函數(shù)粒度,既可以是處于最底層的原子操作的基本函數(shù),也可以是對現(xiàn)有的多個基本函數(shù)以及用戶所定義的一些自定義基本函數(shù)有機組合之后形成的新的基本函數(shù)。
通過后端產(chǎn)生的程序框架以及調(diào)用了相關(guān)基本函數(shù)之后,函數(shù)與函數(shù)之間,必須通過統(tǒng)一的變量和變量的描述形式進行數(shù)據(jù)的傳遞,本文在設(shè)計的網(wǎng)絡(luò)編程實驗后端系統(tǒng)中,對所有函數(shù)之間的變量定義、變量描述以及函數(shù)之間的變量參數(shù)傳遞,都進行了統(tǒng)一的約定,使得函數(shù)之間能夠進行平滑的數(shù)據(jù)傳遞,只有將函數(shù)之間的所有參數(shù)傳遞和變量賦值問題進行了統(tǒng)一規(guī)范化的定義與處理之后,才能確保所有的函數(shù)之間能夠有機地組合在一起,從而保證通過后端系統(tǒng)自動產(chǎn)生的程序框架,能夠可靠地交給前端實驗平臺進行應(yīng)用,并且確保用戶所開發(fā)的實驗程序能夠結(jié)合后端自動產(chǎn)生的程序框架有機地結(jié)合在一起,并實現(xiàn)特定的網(wǎng)絡(luò)編程功能。
網(wǎng)絡(luò)編程實驗一直缺乏有效的實驗平臺,使得網(wǎng)絡(luò)編程在實驗過程中一直缺乏很好的輔助工具,網(wǎng)絡(luò)編程的實驗效果也難以得到有效的保障,本文設(shè)計的網(wǎng)絡(luò)編程實驗平臺通過簡化網(wǎng)絡(luò)編程中的程序代碼,使得實驗者能夠?qū)⒏嗟木械教囟ǖ墓δ艽a開發(fā)上去。而且實驗平臺所提供的相關(guān)輔助開發(fā)模塊能夠更有效地輔助用戶進行網(wǎng)絡(luò)編程的實驗,具有良好的應(yīng)用價值。
[1] 楊華,楊松岸,黃修超.以TMS320C6205為核心的MPEG-4編碼器的設(shè)計與實現(xiàn)[J].通信技術(shù),2003(11):1-2,5.
[2] 劉群,李堅.計算機網(wǎng)絡(luò)實驗教學(xué)體系的構(gòu)建[J].實驗科學(xué)與技術(shù),2010,8(01):97-99.
[3] 張緒玉.基于Virtual PC構(gòu)建單機網(wǎng)絡(luò)環(huán)境[J].重慶工學(xué)院學(xué)報:自然科學(xué)版,2008,22(09):154-157.
[4] 萬潤澤,張昊.虛擬機 VMware在網(wǎng)絡(luò)實用技術(shù)實驗教學(xué)中的研究[J].湖北第二師范學(xué)院學(xué)報,2010,27 (08):133-135.
[5] 文軍,王加懂.DSP程序在線編程的研究與實現(xiàn)[J].信息安全與通信保密,2007(08):192-195,198.
[6] 易克非,胡慶鋒.基于 DSP的實時多任務(wù)調(diào)度內(nèi)核設(shè)計[J].通信技術(shù),2011,44(06):135-137.
[7] 董輝,馬建.基于虛擬蜜網(wǎng)的網(wǎng)絡(luò)攻防實驗平臺的構(gòu)建[J].齊齊哈爾大學(xué)學(xué)報:自然科學(xué)版,2012,28 (02):67-72.
[8] 汪淵,楊姜沫岐,陳月云.基于 DSP構(gòu)建綜合仿真平臺的OFDM系統(tǒng)實現(xiàn)[J].信息安全與通信保密,2006(03):86-88.