首頁(yè) >> 新聞

基于局域網(wǎng)的IP電話(huà)設(shè)計(jì)

吳侃,杜俊俐,鄭秋生 中原工學(xué)院計(jì)算機(jī)科學(xué)系 2004/07/23

  摘 要:主要介紹基于中等帶寬網(wǎng)絡(luò)的語(yǔ)音通訊的原理、關(guān)鍵技術(shù)和實(shí)現(xiàn)方法,給出了一般的開(kāi)發(fā)過(guò)程和具體開(kāi)發(fā)實(shí)例。重點(diǎn)介紹自定義的IP電話(huà)信令系統(tǒng)的原理和實(shí)現(xiàn)過(guò)程。

  關(guān)鍵詞:IP電話(huà);語(yǔ)音通信;CODECs;Winsock控件

1 引 言

  IP電話(huà)是近些年網(wǎng)絡(luò)在實(shí)時(shí)通訊領(lǐng)域的一個(gè)重要應(yīng)用。利用IP電話(huà)系統(tǒng)在實(shí)現(xiàn)通話(huà)功能的基礎(chǔ)上,還可以提供增值服務(wù),如視頻電話(huà)、高保真的立體聲電話(huà)會(huì)議、IP電話(huà)會(huì)議、遠(yuǎn)程電話(huà)教學(xué)應(yīng)用等。

  針對(duì)局域網(wǎng)的網(wǎng)絡(luò)帶寬和用戶(hù)需求,開(kāi)發(fā)出一套基于局域網(wǎng)用戶(hù)的網(wǎng)絡(luò)電話(huà)系統(tǒng)。由于局域網(wǎng)內(nèi)的網(wǎng)絡(luò)帶寬可以達(dá)到10 Mb/s甚至是100 Mb/s的速率,因此,只要選擇了恰當(dāng)?shù)膲嚎s算法,實(shí)現(xiàn)高質(zhì)量的語(yǔ)音通訊是沒(méi)有問(wèn)題的。而且在使用局域網(wǎng)的用戶(hù)中,計(jì)算機(jī)的普及率也是非常高的。這樣的系統(tǒng)在學(xué)校、企事業(yè)單位的局域網(wǎng)內(nèi)將有非常好的推廣價(jià)值。

2 關(guān)鍵技術(shù)

  本文所討論IP電話(huà)指的是計(jì)算機(jī)到計(jì)算機(jī)形式的IP語(yǔ)音電話(huà)。

  為了實(shí)現(xiàn)計(jì)算機(jī)到計(jì)算機(jī)的語(yǔ)音通話(huà),至少需要解決以下兩方面的問(wèn)題:

  (1)雙方都知道對(duì)方的網(wǎng)絡(luò)地址。

  (2)同時(shí)運(yùn)行IP電話(huà)語(yǔ)音通訊程序。

  解決方案是:通過(guò)在系統(tǒng)中駐留一個(gè)資源占用率小的管理程序來(lái)監(jiān)聽(tīng)呼叫請(qǐng)求;在建立通話(huà)時(shí)再調(diào)用IP電話(huà)通訊程序。

  2.1 語(yǔ)音通訊

  語(yǔ)音通訊的基本原理是:對(duì)模擬語(yǔ)音信號(hào)經(jīng)過(guò)模數(shù)轉(zhuǎn)換,進(jìn)行編碼壓縮后,按一定的打包規(guī)則將壓縮幀轉(zhuǎn)換成IP數(shù)據(jù)包通過(guò)數(shù)據(jù)網(wǎng)進(jìn)行傳輸,在目的地經(jīng)過(guò)數(shù)據(jù)解壓、數(shù)模轉(zhuǎn)換復(fù)原成話(huà)音,從而達(dá)到語(yǔ)音通信的目的。這部分是IP電話(huà)的難點(diǎn),也是需要不斷進(jìn)行改進(jìn)的地方?偟哪繕(biāo)是在保證通話(huà)服務(wù)質(zhì)量(QoS)的前提下,盡可能減少網(wǎng)絡(luò)和系統(tǒng)資源的占用。在廣域網(wǎng)語(yǔ)音通訊中,現(xiàn)有技術(shù)還不能完全達(dá)到二者兼顧。所幸對(duì)于局域網(wǎng)用戶(hù),現(xiàn)有的技術(shù)已經(jīng)勉強(qiáng)可以達(dá)到要求。

  2.1.1 語(yǔ)音采集與數(shù)據(jù)壓縮

  語(yǔ)音的采集采樣率的大小直接決定語(yǔ)音的清晰度和采集的原始數(shù)字?jǐn)?shù)據(jù)量的大小。語(yǔ)音采集的原理是通過(guò)在離散的時(shí)間間隔采樣原始聲音并記錄每次采樣的數(shù)字來(lái)表示和重建聲音波形。采集的聲音數(shù)據(jù)的格式有很多標(biāo)準(zhǔn),軟件的設(shè)計(jì)中一般采用波形數(shù)據(jù)的格式。Windows系統(tǒng)中可以采用WAVE_FORMAT_PCM即PCM(脈沖編碼調(diào)制)格式,其采樣率可以為數(shù)據(jù)流采樣后需要對(duì)音頻數(shù)據(jù)進(jìn)行壓縮。采用什么樣的壓縮算法決定了壓縮率的大小,這也是整個(gè)網(wǎng)絡(luò)語(yǔ)音通信技術(shù)的核心和最關(guān)鍵的技術(shù)之一。IP電話(huà)網(wǎng)關(guān)為主的IP語(yǔ)音通信主要使用ITU定義的幾個(gè)語(yǔ)音編碼標(biāo)準(zhǔn):G723.1,G728和G729。他們采用的都是混合編碼的方法,如G.729語(yǔ)音壓縮采用的算法是共軛結(jié)構(gòu)的代數(shù)碼激勵(lì)線(xiàn)形預(yù)測(cè)(CSACELP),是基于CELP編碼模型的算法。

  CODEC是一小段用于壓縮(Compress)及解壓縮(DECompress)數(shù)據(jù)流的代碼。CODECs可以是由操作系統(tǒng)本身附帶的幾種標(biāo)準(zhǔn)的CODECs,如:DSPGroup TrueSpeech CODEC和MSG723.1 CODEC等,也可由系統(tǒng)中所安裝的應(yīng)用程序安裝其他的CODECs。微軟的Windows操作系統(tǒng)中,所有安裝的CODECs由音頻壓縮管理器(ACM)管理。

  2.1.2 數(shù)據(jù)包傳輸

  壓縮后打包的音頻數(shù)據(jù)需要通過(guò)IP協(xié)議在網(wǎng)絡(luò)中傳輸,但首先必須在傳輸層協(xié)議TCP或UDP中選擇其一。UDP包不具備TCP包復(fù)雜的可靠性與控制機(jī)制,當(dāng)強(qiáng)調(diào)傳輸性能(例如延時(shí)特性)而不是傳輸?shù)耐暾詴r(shí),如:音頻和多媒體應(yīng)用,UDP是較好的選擇。

  Winsock控件封裝了許多網(wǎng)絡(luò)傳輸所用到的API函數(shù)。通過(guò)Winsock控件,使網(wǎng)絡(luò)編程變得輕松。

  2.2 信令系統(tǒng)

  決定IP電話(huà)可用性的關(guān)鍵是要使雙方能夠知道對(duì)方的IP地址,這并不太容易做到。以往的IP電話(huà)往往將重點(diǎn)集中于語(yǔ)音通訊模塊的優(yōu)化而忽視了信令系統(tǒng)的改進(jìn)。為了得到對(duì)方IP,可以通過(guò)其他通訊方式,例如E-Mail ,OICQ信使服務(wù)、普通電話(huà)等辦法獲得,但這樣就減少了系統(tǒng)的易用性;當(dāng)然,也可以設(shè)置一個(gè)固定的“通話(huà)服務(wù)器”,采用類(lèi)似于電信電話(huà)的“交換機(jī)”方式進(jìn)行通話(huà)“路由”。但這樣做勢(shì)必造成服務(wù)器的負(fù)荷很重。此外,集中通過(guò)中轉(zhuǎn)也必然造成服務(wù)器擁塞和丟包,通話(huà)延遲和語(yǔ)音質(zhì)量難以改進(jìn)。

  通過(guò)設(shè)置一個(gè)信令服務(wù)器的方式綜合以上兩種方式的優(yōu)缺點(diǎn)。用戶(hù)通話(huà)程序工作于半客戶(hù)機(jī)狀態(tài),信令服務(wù)器負(fù)責(zé)客戶(hù)的集中呼叫。當(dāng)某一個(gè)客戶(hù)呼叫,服務(wù)器負(fù)責(zé)中轉(zhuǎn)呼叫,當(dāng)被叫客戶(hù)響應(yīng)呼叫并應(yīng)答后,自主于呼叫方進(jìn)行通話(huà)而不必經(jīng)過(guò)信令服務(wù)器,這樣,大幅度地減少了服務(wù)器的數(shù)據(jù)量。有了集中的信令服務(wù)器,也便于客戶(hù)的管理,還可進(jìn)行廣播消息的發(fā)布。

  信令與駐留的管理程序相互配合,共同實(shí)現(xiàn)IP電話(huà)的基本通話(huà)邏輯和其他附加功能。信令系統(tǒng)可以設(shè)計(jì)得很復(fù)雜,也可以很簡(jiǎn)單,但必須完成以下功能:呼叫、應(yīng)答、指示通話(huà)、掛斷等基本功能。

3 程序設(shè)計(jì)實(shí)現(xiàn)[1~3]

  基于以上的技術(shù)和所在單位的網(wǎng)絡(luò)資源,筆者初步成功地開(kāi)發(fā)了基于局域網(wǎng)的語(yǔ)音通訊軟件。軟件平臺(tái)為Windows 98/ME/2000/XP;硬件平臺(tái)為含全雙工聲卡、麥克風(fēng)和音響的多媒體PC;開(kāi)發(fā)工具為VisualBasic 6.0,VisualC++6.0和Delphi6.0。下面介紹具體的開(kāi)發(fā)過(guò)程。

  3.1 整體結(jié)構(gòu)

  本系統(tǒng)從邏輯上分為2個(gè)部分:客戶(hù)端和服務(wù)器端。

  客戶(hù)端與服務(wù)器端之間的關(guān)系如圖1所示。


  直接呼叫是指輸入對(duì)方的IP地址,然后向其發(fā)出呼叫請(qǐng)求;而通過(guò)服務(wù)器呼叫指的是向服務(wù)器提交要呼叫的用戶(hù)名,由服務(wù)器在數(shù)據(jù)庫(kù)中查找用戶(hù),如果該用戶(hù)在線(xiàn)的話(huà)將該用戶(hù)的IP返回給客戶(hù)端,然后再由客戶(hù)端發(fā)出呼叫請(qǐng)求。

  服務(wù)器端的數(shù)據(jù)庫(kù)中包含了所有用戶(hù)的資料。例如用戶(hù)的密碼、最后一次登錄時(shí)使用的IP地址、該用戶(hù)是否在線(xiàn)、該帳號(hào)是否被禁用等信息。服務(wù)器端程序利用Winsock控件來(lái)監(jiān)聽(tīng)客戶(hù)端發(fā)來(lái)的請(qǐng)求,對(duì)接收到的客戶(hù)端發(fā)來(lái)的請(qǐng)求進(jìn)行處理,提取出命令字及參數(shù),按照定義好的命令字完成相應(yīng)的工作。

  服務(wù)器完成的任務(wù)基本上都是被動(dòng)的,大部分是響應(yīng)客戶(hù)端發(fā)出的請(qǐng)求。但系統(tǒng)也提供了一個(gè)服務(wù)器端向客戶(hù)端發(fā)消息的功能,可選擇發(fā)送到任一當(dāng)前在線(xiàn)的用戶(hù),也可以選擇發(fā)送到所有在線(xiàn)用戶(hù)。

  如圖2所示,客戶(hù)端由2個(gè)主要模塊組成:系統(tǒng)駐留模塊、語(yǔ)音通訊模塊。

  整個(gè)系統(tǒng)最重要的模塊為系統(tǒng)駐留模塊。在客戶(hù)94端登錄時(shí),該模塊把登錄請(qǐng)求提交給服務(wù)器;在成功登錄服務(wù)器之后呼叫服務(wù)器上的用戶(hù)時(shí),該模塊負(fù)責(zé)向服務(wù)器提交查詢(xún)用戶(hù)請(qǐng)求。從服務(wù)器返回的消息也交給該模塊處理。在直接呼叫時(shí),也是通過(guò)該模塊建立連接。當(dāng)連接建立起來(lái),還是由該模塊調(diào)用語(yǔ)音通訊模塊來(lái)實(shí)現(xiàn)語(yǔ)音通訊。而且以后對(duì)系統(tǒng)進(jìn)行二次開(kāi)發(fā)、插件接口也是基于該模塊的接口定義而開(kāi)發(fā)的。


  語(yǔ)音通訊模塊負(fù)責(zé)建立起連接之后的語(yǔ)音通訊功能。該模塊從聲卡采集音頻數(shù)據(jù)并壓縮,然后根據(jù)從系統(tǒng)駐留模塊獲得的IP地址參數(shù)來(lái)把數(shù)據(jù)流發(fā)送到對(duì)方主機(jī)。同時(shí)該模塊還負(fù)責(zé)對(duì)接收到的語(yǔ)音數(shù)據(jù)流進(jìn)行解壓縮并利用聲卡播放出來(lái)的任務(wù)。

  服務(wù)器端和客戶(hù)端系統(tǒng)駐留模塊使用VB開(kāi)發(fā),語(yǔ)音通訊模塊和部分應(yīng)用界面使用Delphi和VC開(kāi)發(fā)。這是綜合考慮了VB在界面和數(shù)據(jù)庫(kù)設(shè)計(jì)方面的優(yōu)越性,以及VC和Delphi在系統(tǒng)應(yīng)用程序開(kāi)發(fā)上的高效率后做出的選擇。

  3.2 信令系統(tǒng)的實(shí)現(xiàn)

  在C/S模式中,消息命令字起到了非常重要的作用,服務(wù)器端與客戶(hù)端、客戶(hù)端與客戶(hù)端之間通過(guò)發(fā)送以消息命令字開(kāi)頭的包含指定消息的字符串來(lái)實(shí)現(xiàn)溝通。收到指定的消息命令字就去執(zhí)行該消息命令字對(duì)應(yīng)的操作。消息命令字可以是以字節(jié)形式組成的,也可以是以比特位形式組成的。本系統(tǒng)采用的是用固定長(zhǎng)度的字符串組成的消息命令字,通過(guò)定義特殊的消息命令字(信令)來(lái)控制系統(tǒng)工作。為避免混淆規(guī)定:服務(wù)器端可以處理的信令長(zhǎng)度為4個(gè)字符;客戶(hù)端可以處理的信令長(zhǎng)度為6個(gè)字符。

  以下是系統(tǒng)自定義的部分信令格式及其說(shuō)明:
  
  (1)服務(wù)器端接收來(lái)自客戶(hù)端的消息,命令字長(zhǎng)度為4 B。參數(shù)在命令字之后,并且用“/”分開(kāi)。

  LGIN:用戶(hù)登錄服務(wù)器的命令字。

  消息格式:LGIN/客戶(hù)端主機(jī)地址/用戶(hù)名/密碼/新密碼(如果為空則表示不修改密碼)

  使用說(shuō)明:如果服務(wù)器收到該命令字,將處理用戶(hù)的登錄請(qǐng)求。對(duì)客戶(hù)端提供的用戶(hù)名和密碼進(jìn)行驗(yàn)證,并返回驗(yàn)證結(jié)果。如果用戶(hù)提供了新密碼,則在驗(yàn)證通過(guò)的前提下,將該用戶(hù)密碼修改為新密碼。

  CALL:通過(guò)服務(wù)器來(lái)呼叫其他用戶(hù)的命令字。

  消息格式:CALL/客戶(hù)端主機(jī)地址/用戶(hù)名/呼叫的用戶(hù)名

  使用說(shuō)明:如果服務(wù)器收到該命令字,將處理用戶(hù)的呼叫請(qǐng)求。服務(wù)器對(duì)客戶(hù)端所呼叫的用戶(hù)狀態(tài)進(jìn)行查詢(xún),并返回查詢(xún)的結(jié)果。

  QUIT:用戶(hù)從服務(wù)器退出的命令字。消息格式:QUIT/客戶(hù)端主機(jī)地址/用戶(hù)名

  使用說(shuō)明:如果服務(wù)器收到該命令字,將處理用戶(hù)的退出請(qǐng)求。

  (2)客戶(hù)端接收來(lái)自服務(wù)器端的消息,命令字長(zhǎng)度為6 B。參數(shù)在命令字的后面。

  REJECT:用戶(hù)名或密碼錯(cuò)誤的命令字。

  使用說(shuō)明:該命令字沒(méi)有參數(shù)。為了防止用戶(hù)進(jìn)行暴力破解,所以不提供是用戶(hù)名錯(cuò)誤還是密碼錯(cuò)誤的消息。

  ACCEPT:登錄被接納的命令字。

  使用說(shuō)明:當(dāng)客戶(hù)端提供的用戶(hù)名和密碼均正確,而且該帳號(hào)沒(méi)有被禁用的時(shí)候,服務(wù)器返回該命令字,表示客戶(hù)端的登錄請(qǐng)求已經(jīng)被接納。

  (3)客戶(hù)端接收來(lái)自客戶(hù)端的消息,命令字長(zhǎng)度為6 B。參數(shù)在命令字之后,并且用“/”分開(kāi)。

  RECEIV:接收到請(qǐng)求的命令字。

  消息格式:RECEIV/客戶(hù)端主機(jī)地址/用戶(hù)名

  使用說(shuō)明:如果客戶(hù)端收到該命令字,則表示用戶(hù)發(fā)送的請(qǐng)求已經(jīng)成功的到達(dá)對(duì)方。確定網(wǎng)絡(luò)傳輸沒(méi)有問(wèn)題。

  ANSWER:接受語(yǔ)音通話(huà)請(qǐng)求的命令字。消息格式:ANSWER/客戶(hù)端主機(jī)地址/用戶(hù)名

  使用說(shuō)明:如果客戶(hù)端收到該命令字,則表示語(yǔ)音通話(huà)的請(qǐng)求已經(jīng)被接受?蛻(hù)端開(kāi)始調(diào)用語(yǔ)音通訊程序來(lái)實(shí)現(xiàn)語(yǔ)音通訊。 REFUSE:接收到請(qǐng)求的命令字。消息格式:REFUSE/客戶(hù)端主機(jī)地址/用戶(hù)名

  使用說(shuō)明:如果客戶(hù)端收到該命令字,則表示對(duì)方已經(jīng)拒絕了您的請(qǐng)求。這個(gè)請(qǐng)求是您發(fā)出的進(jìn)行語(yǔ)音通話(huà)或者使用插件程序的請(qǐng)求。

  3.3 語(yǔ)音通訊的實(shí)現(xiàn)

  針對(duì)系統(tǒng)要求分別使用Delphi和VC開(kāi)發(fā)了2個(gè)05獨(dú)立的語(yǔ)音通訊模塊,F(xiàn)在介紹使用Delphi6.0開(kāi)發(fā)的語(yǔ)音通訊模塊。

  語(yǔ)音采集與壓縮使用Windows提供的ACM(Audio Compression Manager,音頻壓縮管理器)函數(shù),ACM的聲明文件提供并只提供直接調(diào)用ACMAPI的功能。如果有必要直接使用低層功能,可以按照下面的步驟使用ACM API。

  (1)制定輸入輸出格式

  為了實(shí)現(xiàn)語(yǔ)音的網(wǎng)絡(luò)傳輸必須合理定義語(yǔ)音壓縮的各種參數(shù),只有正確地定義了語(yǔ)音壓縮的各種參數(shù),才能使語(yǔ)音在網(wǎng)絡(luò)中快速傳播,而不產(chǎn)生延遲,同時(shí)又能獲得清晰的音質(zhì)。

  可以使用waveFormatEX數(shù)據(jù)結(jié)構(gòu)記錄聲音格式,這一數(shù)據(jù)結(jié)構(gòu)在Delphi里是TwaveFormatEX,定義在MMSystem單元里。打開(kāi)ACM流,可以通過(guò)調(diào)用acmStreamOpen函數(shù)實(shí)現(xiàn),格式請(qǐng)參考MSDNplatform SDK的內(nèi)容。制定輸入輸出緩沖區(qū)的大小,可以調(diào)用acmStreamSize,使用acmStreamOpen函數(shù)返回的流句柄作為參數(shù)。生成的轉(zhuǎn)換頭得到ACM源緩沖區(qū)和目的緩沖區(qū)的地址。ACM不會(huì)自動(dòng)分配內(nèi)存,必須由應(yīng)用程序申請(qǐng)內(nèi)存。

  (2)轉(zhuǎn)換數(shù)據(jù)

  通過(guò)調(diào)用acmStream Converth函數(shù)實(shí)現(xiàn)。 acmStreamConvert函數(shù)包括流句柄和轉(zhuǎn)換頭句柄。這個(gè)函數(shù)通過(guò)設(shè)定轉(zhuǎn)換頭中的cbDstLength Used表明轉(zhuǎn)換過(guò)程中真正被使用的字節(jié)數(shù)。

  (3)完成輸出以后,釋放資源。轉(zhuǎn)換頭用acm Stream Unperrepare Header函數(shù)來(lái)釋放,流用acmStreamclose來(lái)關(guān)閉。

  經(jīng)過(guò)比較采用ACM控件實(shí)現(xiàn)語(yǔ)音的采集、壓縮、播放。這一組ACM控件包括3個(gè)Component: ACMDialog,ACMWaveIn和ACMWaveOut。


tmpformat.wBitsPerSample:=16;

//定義采樣位數(shù)為16

  為了實(shí)現(xiàn)語(yǔ)音的采集,使用了控件TACMWaveIn,先為他開(kāi)辟了一塊連續(xù)的緩沖區(qū),用控件TACMWaveIn的TACMWaveIn.Open事件來(lái)實(shí)現(xiàn)語(yǔ)音的采集。為了實(shí)現(xiàn)語(yǔ)音的播放,首先通過(guò)語(yǔ)句ACMWaveOut1.Open(@format);把采集到的經(jīng)過(guò)壓縮后的語(yǔ)音取出來(lái)。然后以流的方式,通過(guò)局域網(wǎng)傳送到另一個(gè)主機(jī)的緩沖區(qū)。最后,通過(guò)語(yǔ)句ACMWaveOut1.PlayBack(pdata,Adata.Size)進(jìn)行播放。

  網(wǎng)絡(luò)傳輸可以使用各種方法實(shí)現(xiàn),不同的方法需要不同的處理技巧。本系統(tǒng)使用INDY網(wǎng)絡(luò)控件中的TIDUdpServer和TIDUdpClient這2個(gè)網(wǎng)絡(luò)控件實(shí)現(xiàn),基本符合要求。

4 結(jié) 語(yǔ)

  作者設(shè)計(jì)開(kāi)發(fā)的這個(gè)IP電話(huà)系統(tǒng),經(jīng)過(guò)初步測(cè)試可以滿(mǎn)足局域網(wǎng)用戶(hù)正常的通話(huà)需求。由于時(shí)間的關(guān)系,系統(tǒng)的測(cè)試時(shí)間不是很長(zhǎng),仍然存在一定的缺陷。但在開(kāi)發(fā)的過(guò)程中,各部分功能劃分比較明確,所以對(duì)問(wèn)題出現(xiàn)的原因比較容易定位。

  此外,同時(shí)開(kāi)發(fā)出利用ASP語(yǔ)言編寫(xiě)的網(wǎng)頁(yè)帳號(hào)申請(qǐng)系統(tǒng),他可以在Web服務(wù)的支持下實(shí)現(xiàn)通過(guò)網(wǎng)頁(yè)申請(qǐng)帳號(hào)的功能。出于用戶(hù)需求擴(kuò)充的考慮,也特別制定了插件的開(kāi)發(fā)標(biāo)準(zhǔn)?蛻(hù)可以根據(jù)自身的需要而開(kāi)發(fā)自己的插件,來(lái)實(shí)現(xiàn)系統(tǒng)功能的擴(kuò)充。目前,局域網(wǎng)使用較為成熟,寬帶網(wǎng)的技術(shù)不斷發(fā)展,各種網(wǎng)絡(luò)語(yǔ)音通信產(chǎn)品的技術(shù)開(kāi)發(fā)變得容易,基于上述技術(shù)的產(chǎn)品將得到更廣泛的應(yīng)用。介紹和討論網(wǎng)絡(luò)語(yǔ)音技術(shù)可能會(huì)對(duì)這些產(chǎn)品的開(kāi)發(fā)起到積極的作用。

參考文獻(xiàn)

[1]Microsoft Corporation.MicrosoftWindows用戶(hù)經(jīng)驗(yàn)[M].北京:北京大學(xué)出版社,2001.

[2]韓冰.Delphi多媒體應(yīng)用開(kāi)發(fā)技術(shù)與實(shí)例[M].北京:清華大學(xué)出版社,2002.

[3]Microsoft Corporation.VisualBasic Activex控件參考手冊(cè)[S].1998.

中國(guó)通信網(wǎng)(www.c114.net)—現(xiàn)代電子技術(shù)
分類(lèi)信息:     文摘