WLAN 直连(对等连接或 P2P)调研及 iOS 跨平台调研
文章目錄
- 研究背景
- Andorid端:WiFi-P2P
- 官方定義
- 其他定義
- 重要特性
- 擴展
- 使用場景
- Demo研究
- Android端
- iOS端
- 第三方開源跨平臺研究
- 下一步方向
- 參考
研究背景
Andorid端:WiFi-P2P
Wifi P2P (peer to peer):定義為 Wifi 點對點,也叫 Wifi 直連(Wifi Direct),它是 Wifi Display(投屏) 應用的技術基礎。
官方定義
使用 WLAN 直連 (P2P) 技術,可以讓具備相應硬件的 Android 4.0(API 級別 14)或更高版本設備在沒有中間接入點的情況下,通過 WLAN 進行直接互聯。使用這些 API,您可以實現支持 WLAN P2P 的設備間相互發現和連接,從而獲得比藍牙連接更遠距離的高速連接通信效果。對于多人游戲或照片共享等需要在用戶之間共享數據的應用而言,這一技術非常有用。
其他定義
WiFi Direct是指允許無線網絡中的設備無需通過無線路由器即可相互連接。其原理與藍牙技術類似,這種標準允許無線設備以點對點形式互連。而更為重要的是,WiFi Direct技術允許一個WiFi設備同時建立多個無線連接,這是目前很多新形態WiFi應用最關鍵的技術。
WiFi Direct是一種P2P的無線互聯技術,它所建立的網絡是一種改進型的adhoc網絡,采用無線通訊模式。
WiFi兩種網絡模式:Infrastructure Mode 和Ad Hoc Mode.
WiFi Direct主要解決了物理層的連接問題,包括設備發現和服務發現等。相關技術有NFC和DLNA。
WiFi Direct其他特性:
- 不需要AP或者路由器,設備內置“soft AP”
- 對等連接的雙方只需一方支持WiFi Direct即可實現無線互聯
- 同時支持基礎設施網絡和P2P網絡。
- 可以以一對一或者一對多的方式形成設備互聯
- 至少符合802.11g協議才可以通過WiFi Direct CERTIFIED驗證
- 最大傳輸距離可達到200米,最大傳輸速度為250Mbps,使用2.4GHz與5GHz兩種頻段頻段,并它支持一對一,以及一對多模式。
重要特性
Wifi P2P 技術并不會訪問網絡,但由于會使用到 Java Socket,所以需要申請網絡權限。
只需要打開 Wifi 即可,不需要加入任何網絡或 AP,即可實現對等點連接通訊。(注:在后文的demo中有驗證)
支持服務器給群里設備發送消息。
Wifi Direct實現的只是設備間的配對,配對后的文件傳輸操作還是需要開發者自己來做的。
擴展
Miracast依賴的Wi-Fi技術項有:
- Wi-Fi Direct,也就是Wi-Fi P2P。它支持在沒有AP(Access Point)的情況下,兩個Wi-Fi設備直連并通信。
- Wi-Fi Protected Setup:用于幫助用戶自動配置Wi-Fi網絡、添加Wi-Fi設備等。
- 11n/WMM/WPA2:其中,11n就是802.11n協議,它將11a和11g提供的Wi-Fi傳輸速率從56Mbps提升到300甚至600Mbps。WMM是Wi-Fi Multimedia的縮寫,是一種針對實時視音頻數據的QoS服務。而WPA2意為Wi-Fi Protected Acess第二版,主要用來給傳輸的數據進行加密保護。
上述的Wi-Fi技術中,絕大部分功能由硬件廠商實現。而在Android中,對Miracast來說最重要的是兩個基礎技術:
- Wi-Fi Direct:該功能由Android中的WifiP2pService來管理和控制。
- Wi-Fi Multimedia:為了支持Miracast,Android 4.2對MultiMedia系統也進行了修改。
使用場景
手機連接到某AP上網,運行youtube客戶端看視頻;手機同時通過Wi-Fi Direct連接到電視,將視頻通過Wi-Fi Direct Display投射到大銀幕上.
可實現通過 Wifi 連接,同時使用數據網絡的場景,比如:手機遙控無人機的同時,無人機需要訪問遠程服務器上傳數據。
目前在市場上,Client形式(客戶、用戶使用的)的WiFi產品(無論是USB接口、SDIO接口還是UART接口)都支持WiFi Direct,只是這項技術的用戶感知不強。市面上其實已經有很多用WiFi Direct底層技術的App,例如快牙、瓦力快傳等利用智能手機自身的WiFi模塊自建網絡并傳送文件。
Demo研究
Android端
說明:根據官方的demo,整理成Andorid Studio中可編譯的項目,并添加測試用例。
代碼及測試apk請點擊:WiFiDirectDemo
官方文檔:WLAN 直連(對等連接或 P2P)概覽
官方源碼鏈接:WiFiDirectDemo
測試安裝包:
在apk目錄下,文件名為:wifidirectDemo.apk。
測試用例:
測試之前,記得首先打開手機WiFi,否則部分手機可能出現閃退的問題。
設備支持必要條件:開啟WiFI并允許獲取定位權限。
以下為五種測試場景:
同一局域網場景:
兩個手機連接WLAN熱點:如Test(2.4G/5G),在同一個網絡下。
運行結果:兩個手機能正常通信,能正常收發圖片。
同一局域網分離出兩個路由:
一個手機連接WLAN熱點:如Test-15G),另一個手機連接Test(2.4G/5G)。
運行結果:兩個手機能正常通信,能正常收發圖片。
一個手機連接4G網絡虛擬的人個熱點,一個手機連接Test(2.4G/5G)。
運行結果:兩個手機能正常通信,能正常收發圖片。
運行結果:兩個手機能正常通信,能正常收發圖片。
5. 開發板的測試場景
同上述四種測試場景。
小結:只要兩端都打開wifi,無論連的是否同一個網絡,都可以連接上并收發圖片。
異常情況:
有時候會出現搜索不到的情況,需要多試幾次才能搜索成功。另外需要Rom取消發送邀請、確認配對連接彈窗。
iOS端
Multipeer connectivity是一個使附近設備通過Wi-Fi網絡、P2P Wi-Fi以及藍牙個人局域網進行通信的框架。
互相鏈接的節點可以安全地傳遞信息、流或是其他文件資源,而不用通過網絡服務。
此框架是在iOS7以后推出,旨在替代GameKit下的GKPeerPickerController通信。
通過此框架我們可以直接連接同一網絡下的設備,讓其直接進行類似微信,qq那樣的即時通訊效果。
使用場景:
如何在iPhone移動設備上使用Wi-Fi Direct功能
第三方開源跨平臺研究
Android-iOS 跨平臺傳輸方案調研
https://stackoverflow.com/questions/28906948/peer-to-peer-android-and-ios-with-wifi-direct-multipeer-connectivity
- AllJoyn
alljoyn(目前只找到Android 項目services-simulators,iOS端沒有找到 )
AllJoyn,由高通公司主導的高通創新中心(Qualcomm Innovation Center)所開發的開放源代碼專案,主要用于近距離無線傳輸,透過Wifi或藍牙技術,進行定位與點對點檔案傳輸。
- FireChat
(Android端和iOS端都有相應的App。未找到開源的項目)
FireChat,是一個專門用于手機的APP,由開放花園公司開發。它能使智能手機在沒有網絡存取時,經由無線網狀網絡的藍牙、Wi-Fi,或蘋果公司的多點連線(Multipeer Connectivity)對等網絡架構連線。
- udark (Android和iOS端都有開源項目,Android端底層未用到WiFi-P2P接口,以藍牙和NSD為主,兩端文檔接口不完善)
Mobile peer-to-peer mesh networking library.Integrates into iOS and Android apps and works over Wi-Fi and Bluetooth.
重點對udark進行Demo驗證,驗證后發現存在以下問題:
Android 端:
可以看到底層源碼(只能通過implementation 'io.underdark:underdark:1.0.12'查看jar包),底層代碼初步判斷是基于藍牙和WiFI(NSD)混合模式實現。但是連接成功或是失敗,尋找原因時,由于沒有文檔接口說明不好定位問題。
iOS端: 真機存在適配系統版本13及以上的適配問題,目前只能在iOS模擬器上跑通Demo。代碼不開源,無法看到連接原理,無法定位問題。
文檔:
兩端沒有接口文檔說明,開源作者也無法進一步聯系。
結論:
該開源項目暫時不能在項目中運用,需要考慮其他方向。
下一步方向
- MQTT
MQTT學習筆記以及在項目中的實際運用(2021-1-10新增) - ……
最后,如果你看到了此文,對Wifi P2P及跨平臺通信研究感興趣,歡迎交流。
參考
Wi-Fi Direct
[轉載]深入理解Wi-Fi P2P
Android 10.0相關權限的變更(使用WiFi Direct必須打開定位)
WiFi和AP共存方案研究–Android8.0
Android 實現無網絡傳輸文件1
Android 實現無網絡傳輸文件2(wifi熱點)
手機端對端直連技術
Android無網絡傳輸文件之WifiP2P
WifiDirect (WIFIP2P) 最全最詳細,應用于智能硬件(智能家居,車機,無人機)等
Android Wi-Fi Display(Miracast)介紹(其中的第四種Miracast拓撲圖應用場景有用)
三種主流無線同屏技術介紹(Miracast、DLNA與AirPlay技術)
總結
以上是生活随笔為你收集整理的WLAN 直连(对等连接或 P2P)调研及 iOS 跨平台调研的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 显卡设置导致osg中数字显示不全问题的解
- 下一篇: 用latexdiff输出论文修改痕迹