999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

P2P即時(shí)通信系統(tǒng)關(guān)鍵技術(shù)研究及應(yīng)用

2017-09-29 21:01:07徐文莉熊燕李燕
軟件導(dǎo)刊 2017年9期

徐文莉 熊燕 李燕

摘 要:P2P技術(shù)因其非中心化、身份對(duì)等、可擴(kuò)展性等優(yōu)勢(shì),在即時(shí)通信領(lǐng)域受到重視。基于P2P的即時(shí)通信系統(tǒng),廣泛應(yīng)用于個(gè)人通信、商務(wù)洽談、企業(yè)管理等領(lǐng)域。為完善系統(tǒng)功能,提高開發(fā)效率,對(duì)在.NET平臺(tái)下建立完全對(duì)等的P2P拓?fù)浣Y(jié)構(gòu),實(shí)現(xiàn)局域網(wǎng)通信關(guān)鍵技術(shù)及應(yīng)用方式進(jìn)行了研究。利用PNRP協(xié)議編程實(shí)現(xiàn)了對(duì)等節(jié)點(diǎn)的發(fā)現(xiàn),通過(guò)對(duì)DirectShow的封裝高效完成了音視頻數(shù)據(jù)的采集與壓縮,在TCP/UDP協(xié)議及多線程技術(shù)支持下實(shí)現(xiàn)了數(shù)據(jù)有效傳輸。實(shí)際應(yīng)用表明,系統(tǒng)架構(gòu)設(shè)計(jì)合理,關(guān)鍵技術(shù)應(yīng)用可行。

關(guān)鍵詞:即時(shí)通信;對(duì)等網(wǎng)絡(luò);TCP/UDP;PNRP;DirectShow

DOI:10.11907/rjdk.172275

中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2017)009-0151-03

Abstract:Due to its advantages of non-centrality, identity equivalence, scalability, P2P technology has gradually attracted more attention in the field of instant messaging. Instant messaging system has been widely applied in certain areas based on P2P technology, such as personal communication, business negotiation, enterprise management and so on. With the purpose of improving systems function and enhancing development efficiency, some key technologies and application methods of establishing completely equivalent P2P topology in .NET platform are under research and analysis. By programming with PNRP protocol, peer node discovery is realized. The work of collecting and compressing audio and video data with packaged DirectShow is finished as well. In the end, data effective transmission is solved with the support of TCP/UDP protocol and multithread technology. It can be proved that systems architecture is reasonable, and the application of key technology is feasible and effective.

Key Words:instant messaging; P2P; TCP/UDP; PNRP; DirectShow

0 引言

即時(shí)通信系統(tǒng)的發(fā)展,滿足了人們對(duì)信息交流實(shí)時(shí)性、多樣性、有效性需求。其中,P2P即時(shí)通信系統(tǒng)利用P2P技術(shù)及網(wǎng)絡(luò)通信技術(shù),以計(jì)算機(jī)網(wǎng)絡(luò)為載體,以弱化或消除服務(wù)器分工為前提,以實(shí)現(xiàn)交互雙方便捷有效的文字、圖像、音視頻信息通信為目的,在計(jì)算機(jī)網(wǎng)絡(luò)與通信領(lǐng)域受到廣泛關(guān)注,主流產(chǎn)品包括MSN、騰訊QQ、Skype等。

局域網(wǎng)即時(shí)通信系統(tǒng)具有輕型、高效、便利、易管理等特點(diǎn),較多服務(wù)于校園網(wǎng)、企業(yè)網(wǎng)領(lǐng)域,例如建設(shè)多人視頻會(huì)議平臺(tái)、網(wǎng)絡(luò)教學(xué)平臺(tái)、企業(yè)內(nèi)部服務(wù)平臺(tái)等,這些系統(tǒng)大多依賴服務(wù)端的管理或協(xié)調(diào)功能運(yùn)作[1]。本文討論的即時(shí)通信系統(tǒng)是基于.NET平臺(tái)開發(fā)的一種無(wú)服務(wù)器的完全對(duì)等型P2P通信應(yīng)用軟件,重點(diǎn)分析了系統(tǒng)功能實(shí)現(xiàn)過(guò)程中的對(duì)等節(jié)點(diǎn)發(fā)現(xiàn)、音視頻數(shù)據(jù)采集及傳輸、網(wǎng)絡(luò)消息管理等解決方案。

1 即時(shí)通信系統(tǒng)架構(gòu)及功能

1.1 系統(tǒng)架構(gòu)選擇

P2P架構(gòu)系統(tǒng)優(yōu)勢(shì)是對(duì)等和分布。隨著P2P技術(shù)的發(fā)展,絕大多數(shù)即時(shí)通信系統(tǒng)功能實(shí)現(xiàn)都建立在P2P方式架構(gòu)之上。使用P2P方式架構(gòu)的系統(tǒng)可分為單純型P2P及混合型P2P兩大類,區(qū)別在于是否依賴于專用服務(wù)器[2]。

以騰訊QQ為代表的傳統(tǒng)即時(shí)通信軟件數(shù)據(jù)傳輸采用P2P技術(shù),具有集中式P2P網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),客戶端通信需要索引服務(wù)器的協(xié)調(diào)配合。而以Skype為代表的P2P VoIP軟件,則是從連接建立到數(shù)據(jù)傳輸過(guò)程中都采用P2P實(shí)現(xiàn),建立混合式P2P網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),通信節(jié)點(diǎn)根據(jù)計(jì)算能力不同設(shè)立不同的分工。兩者都屬于混合型P2P系統(tǒng),需要服務(wù)器完成分發(fā)或存儲(chǔ),同時(shí)還要解決網(wǎng)絡(luò)中地址的轉(zhuǎn)換(NAT)問(wèn)題[3]。

PNRP協(xié)議的出現(xiàn),更好地支持了單純型P2P系統(tǒng)發(fā)展,為開發(fā)P2P應(yīng)用程序提供了新的解決途徑[4]。單純型P2P系統(tǒng)所有節(jié)點(diǎn)都是對(duì)等的,任何一個(gè)節(jié)點(diǎn)只要安裝了同一個(gè)P2P應(yīng)用軟件,就可和其它安裝此軟件的節(jié)點(diǎn)直接通信,節(jié)點(diǎn)的管理機(jī)制更加簡(jiǎn)化。但由于PNRP全局云基于IPv6協(xié)議,因此,在IPv6尚未完全普及的今天,PNRP協(xié)議較多應(yīng)用在本地云系統(tǒng)中[2]。考慮到網(wǎng)絡(luò)復(fù)雜性控制,本文選擇建立單純型P2P局域網(wǎng)即時(shí)通信系統(tǒng)。

1.2 系統(tǒng)功能分析

單純型P2P系統(tǒng)可分為登錄模塊、通信模塊、消息存儲(chǔ)與管理模塊及可擴(kuò)展模塊,見(jiàn)圖1。

相關(guān)模塊的實(shí)現(xiàn)及對(duì)應(yīng)的關(guān)鍵技術(shù)支持密不可分,各模塊具體功能如下:endprint

(1)登錄模塊:實(shí)現(xiàn)對(duì)等節(jié)點(diǎn)的注冊(cè)與注銷。對(duì)等節(jié)點(diǎn)通過(guò)登錄模塊,以IP地址及端口為唯一標(biāo)識(shí),加入或退出網(wǎng)絡(luò)拓?fù)洌瑫r(shí)完成用戶在線狀態(tài)的實(shí)時(shí)更新,在通信列表中能查看到在線用戶信息。對(duì)初次登錄節(jié)點(diǎn)生成新的本地存檔文件,用于保存通信記錄。重新登錄時(shí),更新該文件相關(guān)數(shù)據(jù)。

(2)通信模塊:包含文本、音頻、視頻3種通信方式,是系統(tǒng)的核心模塊,分為音視頻處理框架和即時(shí)通信協(xié)議兩部分。音視頻處理框架集成了音視頻采集、音視頻編解碼、音視頻分流控制、音視頻數(shù)據(jù)流網(wǎng)絡(luò)擁塞控制等技術(shù)模塊,能夠完成音視頻數(shù)據(jù)流的采集、編碼、分流等基本處理流程。即時(shí)通信協(xié)議則負(fù)責(zé)為音視頻數(shù)據(jù)協(xié)商傳輸通道,在協(xié)商好的傳輸通道上建立對(duì)應(yīng)連接,從而為音視頻數(shù)據(jù)的順暢傳輸提供保障。

(3)消息存儲(chǔ)與管理模塊:用本地XML文檔存儲(chǔ)用戶信息及通信消息[5]。該文檔的作用類似于日志文件,記載通信數(shù)據(jù),可用于通信記錄查詢、用戶行為分析等功能。

(4)可擴(kuò)展模塊:包括消息群發(fā)、文件傳輸、圖像截取、音視頻錄制等,可擴(kuò)展系統(tǒng)功能。

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

2.1 PNRP協(xié)議編程

PNRP是微軟公司設(shè)計(jì)的基于IPv4和IPv6的點(diǎn)對(duì)點(diǎn)協(xié)議,提供了安全靈活的動(dòng)態(tài)名稱注冊(cè)和名稱解析[6]。系統(tǒng)登錄模塊本質(zhì)就是完成局域網(wǎng)中對(duì)等節(jié)點(diǎn)名稱的注冊(cè)與解析,可基于.NET平臺(tái)的PNRP協(xié)議編程實(shí)現(xiàn)。

.NET平臺(tái)的System.Net.PeerToPeer及System.Net.PeerToPeer.Collaboration命名空間包含了實(shí)現(xiàn)PNRP的類。對(duì)等節(jié)點(diǎn)名稱注冊(cè)及名稱解析是完成PNRP資源發(fā)現(xiàn)的關(guān)鍵,處理流程如圖2所示。

2.1.1 名稱注冊(cè)

用戶登錄過(guò)程即對(duì)應(yīng)名稱注冊(cè)。將對(duì)等名稱發(fā)布到云中,以便其它對(duì)等節(jié)點(diǎn)解析,主要涉及到PeerName類、PeerNameRegistration類,前者用于構(gòu)建對(duì)等名稱實(shí)例對(duì)象,后者用于完成對(duì)等名稱實(shí)例注冊(cè)。其中,設(shè)定Peer端點(diǎn)所有連接本機(jī)的PNRP群及注冊(cè)PNRP Peer Name到PNRP Cloud中的代碼為:

peerNameRegistration.Cloud = Cloud. Available; //設(shè)定Cloud的屬性值

peerNameRegistration.Start(); //調(diào)用Start()方法完成注冊(cè)

2.1.2 名稱解析

名稱解析是利用對(duì)等名稱獲取注冊(cè)到云中的對(duì)等節(jié)點(diǎn)的IP地址和端口過(guò)程。完成名稱解析,則完成了通信節(jié)點(diǎn)定位,可通過(guò)PeerNameResolver類的Resolve方法實(shí)現(xiàn):

PeerNameRecordCollection recColl = myRes.Resolve(myPeer)

由于P2P網(wǎng)絡(luò)允許參與其中的各個(gè)對(duì)等用戶自主加入和退出,為實(shí)現(xiàn)在線對(duì)等節(jié)點(diǎn)信息實(shí)時(shí)更新,需要使用多線程編程技術(shù)完成名稱實(shí)時(shí)解析,主要涉及到委托回調(diào)機(jī)制。

2.2 DirectShow與音視頻信息處理

音視頻信息處理框架設(shè)計(jì)能有效保證系統(tǒng)功能的多樣化,DirectShow技術(shù)為音視頻信息處理提供了高效的解決方法[7]。

2.2.1 .NET對(duì)DirectShow封裝

為使C#開發(fā)者能方便使用DirectShow,.NET對(duì)DirectShow系統(tǒng)框架設(shè)計(jì)了C#開源封裝。利用DirectX.Capture(基于DirectShow.Net的類庫(kù))及DShowNET(DirectShow的組件封裝類)實(shí)現(xiàn)DirectShow的各種功能[7]。

2.2.2 音視頻信息處理

根據(jù)實(shí)際應(yīng)用需求,用戶可完成純文本/語(yǔ)音通信或音視頻實(shí)時(shí)通信,需要分開建立文本、音頻及視頻傳輸模塊,音視頻模塊的數(shù)據(jù)處理流程基本類似[8]。音視頻處理模塊的Filter Graph鏈路、各功能塊Filter及數(shù)據(jù)流處理流程見(jiàn)圖3。

過(guò)濾器圖表提供了音視頻數(shù)據(jù)的轉(zhuǎn)換輸出流程[9]。源過(guò)濾器負(fù)責(zé)采集原始數(shù)據(jù),經(jīng)由轉(zhuǎn)換過(guò)濾器處理數(shù)據(jù)并生成輸出流,通過(guò)提交過(guò)濾器接收數(shù)據(jù),將數(shù)據(jù)提交給外設(shè)呈現(xiàn)。DirectX.Capture類庫(kù)通過(guò)Filters類構(gòu)建音視頻的源Filter、音視頻壓縮Filter,通過(guò)Capture類實(shí)現(xiàn)音視頻數(shù)據(jù)的相關(guān)處理[10]。

由源過(guò)濾器到轉(zhuǎn)換過(guò)濾器的實(shí)現(xiàn),主要包括音視頻設(shè)備的識(shí)別、基本屬性的設(shè)置、數(shù)據(jù)采集、音視頻壓縮Filter的創(chuàng)建等過(guò)程。

(1)數(shù)據(jù)采集。Capture類定義了Start()和Stop()方法,實(shí)現(xiàn)數(shù)據(jù)采集的開始與停止控制。利用創(chuàng)建的過(guò)濾器圖表管理器(Filter Graph Manager)可引出ImediaControl接口,該接口是DirectShow的常用接口,用于控制媒體流在FilterGraph中的流動(dòng),從而實(shí)現(xiàn)對(duì)應(yīng)的Start()及Stop()方法,來(lái)開啟或停止音視頻數(shù)據(jù)的采集。另外視頻幀圖像的獲取,可以利用Sample Grabber過(guò)濾器的一個(gè)接口IsampeGrabberCB來(lái)實(shí)現(xiàn)。

(2)創(chuàng)建音視頻壓縮Filter。音視頻壓縮的實(shí)現(xiàn)過(guò)程是安裝需要的音視頻編解碼器,DirectX.Capture可枚舉出相應(yīng)的壓縮Filter,由AudioCompressor和VideoCompressor屬性分別記錄對(duì)應(yīng)設(shè)定值。這兩個(gè)屬性通過(guò)DirectShow的IBaseFilter接口定義,用來(lái)實(shí)現(xiàn)數(shù)據(jù)壓縮的處理[11]。音頻壓縮采用G.729標(biāo)準(zhǔn),視頻壓縮采用H.264壓縮標(biāo)準(zhǔn)。

從音視頻壓縮Filter的定義方式可看出,壓縮標(biāo)準(zhǔn)的選擇需要在數(shù)據(jù)采集前就完成設(shè)定,否則系統(tǒng)內(nèi)部的FilterGraph會(huì)因改變而重建,可能造成有效數(shù)據(jù)的丟失。endprint

(3)DirectShow音視頻同步播放控制。由于視頻比音頻的數(shù)據(jù)量大,音頻數(shù)據(jù)比視頻數(shù)據(jù)傳輸速率快這一特性,使得音視頻同步成為音視頻通信的關(guān)鍵技術(shù)。DirectShow通過(guò)給媒體數(shù)據(jù)加蓋時(shí)間戳來(lái)實(shí)現(xiàn)音頻和視頻的同步播放,但局域網(wǎng)中音視頻的采集方式具有間隔均勻(采樣頻率決定)、實(shí)時(shí)性等特點(diǎn),可適當(dāng)簡(jiǎn)化數(shù)據(jù)同步控制環(huán)節(jié)。

2.3 傳輸層技術(shù)應(yīng)用

P2P即時(shí)通信系統(tǒng)中,通信節(jié)點(diǎn)間可直接發(fā)送文本消息或進(jìn)行音、視頻實(shí)時(shí)通信。區(qū)分各類數(shù)據(jù)信息的關(guān)鍵在于對(duì)應(yīng)數(shù)據(jù)類型的定義不同,數(shù)據(jù)的通信交互流程基本原理是相同的。

對(duì)比TCP協(xié)議及UDP協(xié)議各自優(yōu)勢(shì),選擇采用UDP方式收發(fā)通信消息,監(jiān)聽(tīng)控制則選用TCP協(xié)議來(lái)保證可靠傳輸。在有效接收文本消息的同時(shí),將數(shù)據(jù)保存在XML文檔中。

2.3.1 文本信息傳輸

用戶可利用UdpClient對(duì)象負(fù)責(zé)發(fā)送和接收消息。在System.Net.Sockets命名空間下的UdpClient類對(duì)基礎(chǔ)Socket進(jìn)行封裝,提供發(fā)送和接收UDP數(shù)據(jù)報(bào)的方法。在發(fā)送線程中,利用UdpClient對(duì)象的Send方法,將UDP數(shù)據(jù)報(bào)發(fā)送到位于指定遠(yuǎn)程結(jié)點(diǎn)的主機(jī);在接收線程中,利用該對(duì)象的Receive方法來(lái)獲取從遠(yuǎn)程主機(jī)發(fā)送的UDP數(shù)據(jù)報(bào)。UDP方式不需要建立連接,可以在任何時(shí)候直接向網(wǎng)絡(luò)中的任意主機(jī)發(fā)送UDP數(shù)據(jù)。

2.3.2 音視頻數(shù)據(jù)實(shí)時(shí)傳輸

在建立網(wǎng)絡(luò)傳輸通路時(shí),需要分別創(chuàng)建音視頻數(shù)據(jù)的Socket連接,對(duì)應(yīng)的數(shù)據(jù)傳輸也是分離的。利用DirectShow技術(shù),在構(gòu)建Filter Graph前,將Socket相關(guān)操作都放入音視頻的接收/發(fā)送Filter中,可簡(jiǎn)化設(shè)計(jì)流程。

3 結(jié)語(yǔ)

本文對(duì).NET平臺(tái)下實(shí)現(xiàn)單純型P2P即時(shí)通信系統(tǒng)的關(guān)鍵技術(shù)進(jìn)行了研究,包括P2P網(wǎng)絡(luò)技術(shù)、PNRP名稱解析協(xié)議及基于DirectShow技術(shù)的音視頻處理等,為P2P應(yīng)用軟件開發(fā)提供了一種有效的解決方法。由于條件限制,系統(tǒng)功能還有待進(jìn)一步完善,例如消息存儲(chǔ)與管理功能中,可考慮采用數(shù)據(jù)緩存機(jī)制,減少XML文檔讀寫頻率,對(duì)于音視頻數(shù)據(jù)可添加錄制、保存功能等。另外,僅討論了局域網(wǎng)的P2P通信,對(duì)位于不同子網(wǎng)的對(duì)等節(jié)點(diǎn)通信還需進(jìn)一步研究與探討。

參考文獻(xiàn):

[1] 張鵬.P2P技術(shù)在即時(shí)通信中的應(yīng)用及安全策略[J].信息通信,2015(1):178-179.

[2] 鄭阿奇.Visual C#網(wǎng)絡(luò)編程[M].北京:電子工業(yè)出版社,2012:134-145.

[3] 張春紅,裘曉峰,弭偉,等.P2P技術(shù)全面解析[M].北京:人民郵電出版社,2010:150-152.

[4] 段明瑋,王振,周弟偉.基于PNRP的P2P技術(shù)實(shí)現(xiàn)方案[J].科技研究,2012(11):109-110.

[5] 祝遠(yuǎn)緩.基于P2P的即時(shí)通信系統(tǒng)的研究[D].長(zhǎng)春:東北師范大學(xué),2012.

[6] 范先龍,郭傳雄,遲學(xué)斌.一種基于Windows Peer to Peer網(wǎng)絡(luò)的VoIP系統(tǒng)及其實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2006,11(4):220-223.

[7] 崔龍衛(wèi).基于P2P的音視頻通訊系統(tǒng)的研究與設(shè)計(jì)[D].武漢:武漢理工大學(xué),2011.

[8] 雷文禮,任新成,張棟,等.基于DirectShow的網(wǎng)絡(luò)視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2015,38(7):31-33.

[9] 王新蕾,劉乃豐,夏濟(jì)海.基于DirectShow的視頻處理Filter組件設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2016,39(13):46-50.

[10] 方文驍,張?jiān)阼?基于.NET框架的網(wǎng)絡(luò)視頻處理[J].計(jì)算機(jī)工程,2011(37):359-361.

[11] 孟月華,鄧基園.DirectShow技術(shù)的應(yīng)用研究與開發(fā)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(6):196-199.

(責(zé)任編輯:杜能鋼)endprint

主站蜘蛛池模板: 狠狠色婷婷丁香综合久久韩国| 国产麻豆福利av在线播放| 欧美视频免费一区二区三区| 日本成人一区| 国产亚洲欧美日本一二三本道| 国产亚洲欧美另类一区二区| 99re精彩视频| 黑人巨大精品欧美一区二区区| 日韩色图区| 国产美女在线观看| 国产精品区网红主播在线观看| 久久国产精品电影| 日韩在线第三页| 国产乱子伦精品视频| 国产精品v欧美| 成人精品在线观看| 久久免费视频6| 尤物国产在线| 成人在线综合| 国产午夜福利亚洲第一| 欧日韩在线不卡视频| 久久公开视频| 亚洲欧美自拍一区| 亚洲手机在线| 人妻丰满熟妇AV无码区| 婷婷色狠狠干| 国产精品欧美激情| AV不卡在线永久免费观看| 国产91麻豆免费观看| 亚洲人成电影在线播放| 91欧美在线| 一本二本三本不卡无码| 欧美伊人色综合久久天天| 萌白酱国产一区二区| 国产噜噜在线视频观看| 手机在线看片不卡中文字幕| 玖玖免费视频在线观看| 中文字幕 欧美日韩| 综合色区亚洲熟妇在线| 亚洲人成网站日本片| 亚洲无限乱码一二三四区| 久久五月视频| 日韩专区欧美| 老司机精品久久| 色老二精品视频在线观看| 成人一区专区在线观看| 国产91小视频| 真实国产乱子伦视频| 亚洲AV无码不卡无码| 亚洲水蜜桃久久综合网站| 免费女人18毛片a级毛片视频| 午夜精品影院| 久久人体视频| 青青操国产视频| 国产69精品久久| 国产成人亚洲精品无码电影| 爱爱影院18禁免费| 欧美另类视频一区二区三区| 女同国产精品一区二区| 亚洲成a∧人片在线观看无码| 欧美第一页在线| 一级毛片a女人刺激视频免费| 日韩一区二区在线电影| 久久久久无码国产精品不卡| 欧类av怡春院| 91日本在线观看亚洲精品| 亚洲一级毛片| 亚洲成人在线网| 尤物亚洲最大AV无码网站| 亚洲精品动漫| 一本色道久久88| 3344在线观看无码| 欧美国产日韩在线观看| 怡红院美国分院一区二区| 日韩福利在线视频| 她的性爱视频| 精品一区二区久久久久网站| 青青操视频在线| 美女高潮全身流白浆福利区| 欧美a在线视频| 亚洲日本www| 91福利免费视频|