天天看點

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

0 引言

随着移動通信系統的演進和發展,帶來需求帶寬的迅速增大,但是由于移動通信系統頻譜資源非常有限,可配置設定的帶寬滿足不了實際的應用需要,是以亟需研究更有效的帶寬配置設定和利用的技術。D2D(Device to Device)通信是一種在系統的控制下,允許終端之間通過複用小區資源直接進行通信的新型技術。它不依賴中心節點而是依靠網絡邊緣節點,實作自組織與對等協作的資源發現和共享,是以擁有自組織、可擴充性、魯棒性、容錯性以及負載均衡等優點,在一定程度上解決無線通信系統的頻譜資源匮乏的問題,同時它還能減少小區網絡的負載、減少移動終端的電池功耗、增加比特率等,它是未來綠色通信發展的趨勢。

針對這一新型的通信技術,本文提出了基于WiFi的自組織網絡的D2D通信模型,能以現有的數台近距離智能終端為基礎,使得這些終端之間能夠進行通信與資源共享。本文基于Android作業系統,以JXTA協定為模型,最終實作了基于WiFi的D2D通信,并通過網絡實驗驗證了其有效性。

1 D2D通信系統模型

該系統實作手機等智能終端之間進行通信和資源的共享,任務包括實作D2D網絡服務的架設、Android平台的JXTA技術、網絡節點之間的通信、網絡節點之間的資源共享。

D2D網絡主要由3個部分組成,分别是Android平台節點、PC平台節點和Peer集合點,其中Peer集合點負責收集和發送節點清單資訊,起到系統排程的作用,各節點可以通過集合點擷取存在的節點清單,通過該清單,即可對該對等網絡中的任意節點進行通信,接收和發送資料。系統模型如圖1所示。

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

該系統主要通過JXTA協定建構一個D2D網絡,在網絡中設定有若幹個PC機節點和手機節點,每個節點中都有共享檔案,任意節點可通過D2D網絡集合點通路其他節點的共享資源。系統啟動時首先進行初始化,初始化過程會檢查手機使用者是否通過WiFi連入網絡、檢查緩存情況、啟動JXTA網絡連接配接,啟動之後将搜尋JXTA網絡集合點RDV,讀取集合點上的Peer清單。待初始化完畢之後,各個Peer節點就可以利用JXTA網絡提供的管道服務互相通信了,Peer節點也可以向RDV節點請求所有節點共享的資源檔案,資源集合點将相應的節點所共享的資源清單以XML檔案的形式回報給請求節點,接到回報的資源清單之後,通信系統根據使用者的選擇,向相應的節點發送檔案傳輸請求,經握手後即開始傳輸資料。系統的主要流程圖如圖2所示。

2 D2D通信系統的實作

2.1 接入網的配置

要實作D2D的通信,終端裝置必須先接入WiFi網絡,是以在程式啟動時,應先檢查終端裝置是否已接入網絡,其代碼如下:

  

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]
一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

若使用者已接入WiFi網絡,則啟動主應用程式的UI。在進入應用程式的主界面之前,需要進行系統的初始化,檢查緩存情況,啟動JXTA網絡連接配接,搜尋JXTA集合點RDV并讀取集合點上的Peer清單。系統的主界面如圖3所示。

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

2.2 節點搜尋功能

該功能主要用于對網絡上的Peer節點進行搜尋,維護一個節點清單。該搜尋程式通過JXTA對等機發現協定PDP(Peer Discovery Protoc ol)進行節點搜尋,PDP定義了發現其他Peer和資源的協定,該協定包括兩個方面:一方面用于請求獲得其他Peer的Advertisement;另一方面用于響應其他Peer的這種請求。Peer給所有已知的Peer和Rendezvous Peer發送一個Discovery Query Message,Rendezvous Peer對Discove ry請求進行處理,并傳回一個Discovery Response Message,其中包含其緩存中advertisement。另外它還把這個請求廣播給所有知道的Pe er,收到請求的Peer搜尋本地緩存尋找比對advertisement,如果找到,就直接給最初的請求方發送一個Discovery Response Message。該程式運作在一個線程中,在該線程中執行一個循環,每隔30 s擷取一次節點清單。節點搜尋線程代碼如下:

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]
一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

當使用者單擊Peer List菜單選項時,Peer節點從RDV集合點讀取節點清單,并顯示在相應的UI界面中,如圖4所示。

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

而網絡節點清單收集主要完成啟動并初始化JXTA網絡,形成一個網絡集合點Rendezvous Peer,集合點服務的主要功能是允許Peer網絡上的其他Peer傳播消息。該集合點可以監聽到所有相鄰網絡請求連接配接的Peer節點,包括PC機模拟節點和Android手機節點,通過一個節點清單對目前節點的資訊進行維護,接收節點的連接配接與退出請求。當使用者單擊Leave Network要離開網絡時,必須通過advertisement通知RDV節點,此時RDV節點就可以更新所擁有的節點清單,當其他節點下一次從RDV節點讀取節點清單資訊時,就可以及時地更新線上的節點。

集合點類的設計主要是通過集合點協定RVP(Rendezvous Protocol),簡單Peer運用該協定同集合點相連接配接,由集合點代表自己向其他Peer傳播消息。RVP的實作扮演雙重角色,為傳播消息提供了統一的API,該功能不依賴Peer是否配置成集合點。

2.3 通信子產品的設計

通信子產品采用JXTA雙向管道進行消息傳輸。當使用者登入之後,啟動一個線程,線上程裡建立JxtaServerPipe,不停輪詢,等待其他使用者發來的消息。當使用者A想與使用者B聊天時,隻要建立一個到使用者B的JxtaBiDiPipe,該JxtaBiDiPipe和使用者B的JxtaServerPipe進行連接配接。聊天消息是用XML進行封裝的,不同的消息可以定義不同的命名空間,以便接收端進行差別。而且一條消息可以包含多部分資訊,比如區分消息的版本、消息發送者名字等等。接收端對接收到的消息進行解析處理,然後顯示到聊天對話界面裡。

資訊發送的源代碼(資訊接收的實作類似)如下:

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

2.4 檔案發送與接收

檔案發送的實作是利用P2PSocket編寫的程式,可以在任意Peer之間對等地傳輸檔案。該程式通過JXTA管道綁定協定,由Pipe向遠端Pee*r發送檔案,檔案将以流的形式傳遞通過PipeMsgEvent實作PipeMsgListener,每次當有消息傳送到管道的時候,事件将被捕獲。通過fileRequest處理共享檔案清單的請求,向對方發送包含共享檔案名的清單的消息在一個線程中執行一個循環,通過JXTA網絡進行檔案資源廣播,如果得到回應就進行資源請求确認,确認完成之後調用this,socket Service.file Transfer()函數發送目前檔案資源。

檔案發送的源代碼如下:

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

當單擊File Share菜單選項時,會顯示出目前網絡中的節點所共享的檔案,如圖5所示。

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]

  當使用者可以選中其中的某一個檔案,JXTA網絡利用Pipe從共享該檔案的節點那裡讀取資料并存儲在本機的SD卡上,檔案接收的代碼和發送的類似。

3 結語

本文研究并設計實作了基于Android作業系統,以JXTA協定為模型,應用WiFi網絡的無線D2D通信系統。該系統能以現有的數台近距離的智能手機為基礎,建立起一個無線P2P網絡,使得這些使用者之間能夠友善地進行通信與資源共享,這将成為諸多使用者豐富自身手機資源的有效途徑。 

一種基于Android和JXTA協定模型的無線D2D通信技術[圖]