RakNet是一個(gè)跨平臺(tái)的C++和C#的游戲引擎,它主要是為高效的數(shù)據(jù)傳輸而設(shè)計(jì),使用者可以通過它進(jìn)行游戲和其他的程序的開發(fā)。RakNet雖然是一個(gè)游戲引擎,但同樣也是一個(gè)非常好的視頻會(huì)議系統(tǒng)傳輸引擎 ,在視頻會(huì)議的開發(fā)當(dāng)中,我們?yōu)槭裁葱枰猂aknet作為我們的傳輸引擎呢?主要原因是因?yàn)閭鹘y(tǒng)的TCP傳輸和UDP方式,很難適應(yīng)視頻會(huì)議的大流量且實(shí)時(shí)的數(shù)據(jù)傳輸,TCP雖然能可靠地傳輸數(shù)據(jù),但傳輸過程需要進(jìn)行協(xié)商,因此傳輸效率不高。而UDP方式是非可靠方式,傳輸過程雖然能做到實(shí)時(shí)傳輸,但在傳輸過程會(huì)出現(xiàn)丟包的情況,通過的封裝雖然能進(jìn)行丟包的檢測(cè),但不能對(duì)數(shù)據(jù)進(jìn)行恢復(fù)。而Raknet傳輸引擎可以解決大流量且實(shí)時(shí)數(shù)據(jù)傳輸這個(gè)難題,其是建立在UDP協(xié)議的基礎(chǔ)上對(duì)數(shù)據(jù)進(jìn)行封裝,使用者只需要簡單的幾行代碼,就可以實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時(shí)可靠的數(shù)據(jù)傳輸,大大提高了視頻會(huì)議開發(fā)的效率。Raknet除了這些的優(yōu)點(diǎn)外,還具有以下的特點(diǎn):
1、 單線程接收處理
視頻會(huì)議開發(fā)中,我們?nèi)绻捎脗鹘y(tǒng)的傳輸模式,需要建立不同的接收線程接收傳送方的數(shù)據(jù),這樣我們?cè)陂_發(fā)當(dāng)中還需要對(duì)線程進(jìn)行管理。而Raknet傳輸引擎只用一個(gè)線程作為全部的接收線程,雖然只用一個(gè)線程進(jìn)行數(shù)據(jù)的接收,但其效率非常高,據(jù)的測(cè)試報(bào)告,其1秒鐘可以傳輸超過25000條數(shù)據(jù),大大超過直接使用TCP或者UDP的傳輸方式。
2、 NAT穿透
Raknet傳輸引擎已經(jīng)為我們封裝了NAT穿透,兩個(gè)不同內(nèi)網(wǎng)的終端,只需要調(diào)用Raknet的NAT傳輸模塊就可以快速的實(shí)現(xiàn)不同NAT網(wǎng)絡(luò)的數(shù)據(jù)連接。這個(gè)功能同樣對(duì)于我們視頻會(huì)議開發(fā)也非常有價(jià)值,我們不需要格外的開發(fā)NAT穿透的程序,直接使用Raknet就可以實(shí)現(xiàn)NAT的傳統(tǒng)和打洞及傳輸。
3、 跨平臺(tái)
Raknet傳輸引擎是一個(gè)跨平臺(tái)的傳輸庫,可以用于Windows、linux、MAC、IPhone、Android、PlayStation 等幾乎所有的操作系統(tǒng),視頻會(huì)議服務(wù)器有許多是在linux下進(jìn)行開發(fā)的,并運(yùn)行于linux下,Raknet的該特點(diǎn)可以使其更適合于在服務(wù)器端的開發(fā)。
4、 遠(yuǎn)程調(diào)用(RPC)
Raknet傳輸引擎支持RPC(遠(yuǎn)程調(diào)用),通過RPC的功能,我們可以輕而易舉地的調(diào)用服務(wù)器的函數(shù)或者過程,通過RPC的功能,我們可以快速開發(fā)出具有的視頻會(huì)議系統(tǒng)。
5、 P2P語音傳輸
Raknet傳輸引擎自帶了P2P的語音傳輸,我們開發(fā)P2P語音的時(shí)候,只需要簡單幾行代碼,就可以實(shí)現(xiàn)P2P的低帶寬的語言傳輸。
6、 安全數(shù)據(jù)傳輸
視頻會(huì)議的數(shù)據(jù)安全非常重要,Raknet為我們提供了多種的數(shù)據(jù)加密方式,如SHA1, AES128, SYN等,通過這些加密的功能,保證了數(shù)據(jù)傳輸?shù)陌踩浴?/span>
7、 目錄服務(wù)器
Raknet傳輸引擎具有目錄服務(wù)器,我們可以通過目錄服務(wù)器,直接連接不同的終端。
總結(jié),Raknet作為一個(gè)成熟的傳輸引擎,使用其作為我們視頻會(huì)議系統(tǒng)的開發(fā),不僅可以為我們提供一個(gè)可靠、實(shí)時(shí)的數(shù)據(jù)傳輸平臺(tái),還可以大大提高我們的開發(fā)效率。