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