一種基于Android和JXTA協(xié)議模型的無線D2D通信技術(shù)
2.2 節(jié)點搜索功能
該功能主要用于對網(wǎng)絡(luò)上的Peer節(jié)點進行搜索,維護一個節(jié)點列表。該搜索程序通過JXTA對等機發(fā)現(xiàn)協(xié)議PDP(Peer Discovery Protoc ol)進行節(jié)點搜索,PDP定義了發(fā)現(xiàn)其他Peer和資源的協(xié)議,該協(xié)議包括兩個方面:一方面用于請求獲得其他Peer的Advertisement;另一方面用于響應其他Peer的這種請求。Peer給所有已知的Peer和Rendezvous Peer發(fā)送一個Discovery Query Message,Rendezvous Peer對Discove ry請求進行處理,并返回一個Discovery Response Message,其中包含其緩存中advertisement。另外它還把這個請求廣播給所有知道的Pe er,收到請求的Peer搜索本地緩存尋找匹配advertisement,如果找到,就直接給最初的請求方發(fā)送一個Discovery Response Message。該程序運行在一個線程中,在該線程中執(zhí)行一個循環(huán),每隔30 s獲取一次節(jié)點列表。節(jié)點搜索線程代碼如下:
當用戶單擊Peer List菜單選項時,Peer節(jié)點從RDV集合點讀取節(jié)點列表,并顯示在相應的UI界面中,如圖4所示。本文引用地址:http://cafeforensic.com/article/154424.htm
而網(wǎng)絡(luò)節(jié)點列表收集主要完成啟動并初始化JXTA網(wǎng)絡(luò),形成一個網(wǎng)絡(luò)集合點Rendezvous Peer,集合點服務(wù)的主要功能是允許Peer網(wǎng)絡(luò)上的其他Peer傳播消息。該集合點可以監(jiān)聽到所有相鄰網(wǎng)絡(luò)請求連接的Peer節(jié)點,包括PC機模擬節(jié)點和Android手機節(jié)點,通過一個節(jié)點列表對當前節(jié)點的信息進行維護,接收節(jié)點的連接與退出請求。當用戶單擊Leave Network要離開網(wǎng)絡(luò)時,必須通過advertisement通知RDV節(jié)點,此時RDV節(jié)點就可以更新所擁有的節(jié)點列表,當其他節(jié)點下一次從RDV節(jié)點讀取節(jié)點列表信息時,就可以及時地更新在線的節(jié)點。
集合點類的設(shè)計主要是通過集合點協(xié)議RVP(Rendezvous Protocol),簡單Peer運用該協(xié)議同集合點相連接,由集合點代表自己向其他Peer傳播消息。RVP的實現(xiàn)扮演雙重角色,為傳播消息提供了統(tǒng)一的API,該功能不依賴Peer是否配置成集合點。
2.3 通信模塊的設(shè)計
通信模塊采用JXTA雙向管道進行消息傳輸。當用戶登錄之后,啟動一個線程,在線程里創(chuàng)建JxtaServerPipe,不停輪詢,等待其他用戶發(fā)來的消息。當用戶A想與用戶B聊天時,只要建立一個到用戶B的JxtaBiDiPipe,該JxtaBiDiPipe和用戶B的JxtaServerPipe進行連接。聊天消息是用XML進行封裝的,不同的消息可以定義不同的命名空間,以便接收端進行區(qū)別。而且一條消息可以包含多部分信息,比如區(qū)分消息的版本、消息發(fā)送者名字等等。接收端對接收到的消息進行解析處理,然后顯示到聊天對話界面里。
信息發(fā)送的源代碼(信息接收的實現(xiàn)類似)如下:
p2p機相關(guān)文章:p2p原理
評論