WLAN 直连(对等链接或 P2P)调研及iOS跨平台调研

# 研究背景android

  1. 两个设备链接同一局域网不一样频率的网络后,两端可能出现不能正常通讯的问题。
  2. 若是经过Socket进行本地局域网通讯,不在一个网络会出现找不到设备IP,没法链接的问题,外网走服务器会出现延迟、数据同步不许确的问题。
  3. 在混合网络场景中,在链接AP时,既能同时在两端点对点通讯,而且两端也能分别进行外网访问。
  4. 新技术方向必要条件:须要同时支持Android和iOS两端。

Andorid端:WiFi-P2P

Wifi P2P (peer to peer):定义为 Wifi 点对点,也叫 Wifi 直连(Wifi Direct),它是 Wifi Display(投屏) 应用的技术基础。ios

官方定义

使用 WLAN 直连 (P2P) 技术,可让具有相应硬件的 Android 4.0(API 级别 14)或更高版本设备在没有中间接入点的状况下,经过 WLAN 进行直接互联。使用这些 API,您能够实现支持 WLAN P2P 的设备间相互发现和链接,从而得到比蓝牙链接更远距离的高速链接通讯效果。对于多人游戏或照片共享等须要在用户之间共享数据的应用而言,这一技术很是有用。

其余定义

WiFi Direct是指容许无线网络中的设备无需经过无线路由器便可相互链接。其原理与蓝牙技术相似,这种标准容许无线设备以点对点形式互连。而更为重要的是,WiFi Direct技术容许一个WiFi设备同时创建多个无线链接,这是目前不少新形态WiFi应用最关键的技术。git

WiFi Direct是一种P2P的无线互联技术,它所创建的网络是一种改进型的adhoc网络,采用无线通信模式。github

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两种频段频段,并它支持一对一,以及一对多模式。

重要特性

  1. Wifi P2P 技术并不会访问网络,但因为会使用到 Java Socket,因此须要申请网络权限。
  2. 只须要打开 Wifi 便可,不须要加入任何网络或 AP,便可实现对等点链接通信。(注:在后文的demo中有验证)
  3. 支持服务器给群里设备发送消息。
  4. 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系统也进行了修改。

使用场景

  1. 手机链接到某AP上网,运行youtube客户端看视频;手机同时经过Wi-Fi Direct链接到电视,将视频经过Wi-Fi Direct Display投射到大银幕上.
  2. 可实现经过 Wifi 链接,同时使用数据网络的场景,好比:手机遥控无人机的同时,无人机须要访问远程服务器上传数据。
  3. 目前在市场上,Client形式(客户、用户使用的)的WiFi产品(不管是USB接口、SDIO接口仍是UART接口)都支持WiFi Direct,只是这项技术的用户感知不强。市面上其实已经有不少用WiFi Direct底层技术的App,例如快牙、瓦力快传等利用智能手机自身的WiFi模块自建网络并传送文件。

Demo研究

Android端

说明:根据官方的demo,整理成Andorid Studio中可编译的项目,并添加测试用例。app

代码及测试apk请点击:WiFiDirectDemo

官方文档:WLAN 直连(对等链接或 P2P)概览
官方源码连接:WiFiDirectDemo

测试安装包:
在apk目录下,文件名为:wifidirectDemo.apk

测试用例:

测试以前,记得首先打开手机WiFi,不然部分手机可能出现闪退的问题。

设备支持必要条件:开启WiFI并容许获取定位权限。

如下为五种测试场景:

  1. 同一局域网场景:

两个手机链接WLAN热点:如Smart(2.4G/5G),在同一个网络下。
运行结果:两个手机能正常通讯,能正常收发图片。

  1. 同一局域网分离出两个路由:

一个手机链接WLAN热点:如Smart-Slim(5G),另外一个手机链接Smart(2.4G/5G)

运行结果:两个手机能正常通讯,能正常收发图片。

  1. AP隔离场景:

一个手机链接4G网络虚拟的人个热点,一个手机链接Smart(2.4G/5G)
运行结果:两个手机能正常通讯,能正常收发图片。

  1. 两个手机只须要打开WiFi,不须要链接任何网络。

运行结果:两个手机能正常通讯,能正常收发图片。

  1. 开发板的测试场景

    同上述四种测试场景。

小结:只要两端都打开wifi,不管连的是否同一个网络,均可以链接上并收发图片。

异常状况:

有时候会出现搜索不到的状况,须要多试几回才能搜索成功。另外须要Rom取消发送邀请、确认配对链接弹窗。

iOS端

Multipeer connectivity是一个使附近设备经过Wi-Fi网络、P2P Wi-Fi以及蓝牙我的局域网进行通讯的框架。

互相连接的节点能够安全地传递信息、流或是其余文件资源,而不用经过网络服务。

此框架是在iOS7之后推出,旨在替代GameKit下的GKPeerPickerController通讯。

经过此框架咱们能够直接链接同一网络下的设备,让其直接进行相似微信,qq那样的即时通信效果。

使用场景:

如何在iPhone移动设备上使用Wi-Fi Direct功能

第三方开源跨平台研究

Android-iOS 跨平台传输方案调研

https://stackoverflow.com/que...

alljoyn(目前只找到Android 项目services-simulators,iOS端没有找到 )

AllJoyn,由高通公司主导的高通创新中心(Qualcomm Innovation Center)所开发的开放源代码专案,主要用于近距离无线传输,透过Wifi或蓝牙技术,进行定位与点对点档案传输。

(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
  • 蓝牙套接字
  • ……

最后,若是你看到了此文,对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技术)

相关文章
相关标签/搜索