# 钻研背景

  1. 两个设施连贯同一局域网不同频率的网络后,两端可能呈现不能失常通信的问题。
  2. 如果通过Socket进行本地局域网通信,不在一个网络会呈现找不到设施IP,无奈连贯的问题,外网走服务器会呈现提早、数据同步不精确的问题。
  3. 在混合网络场景中,在连贯AP时,既能同时在两端点对点通信,并且两端也能别离进行外网拜访。
  4. 新技术方向必要条件:须要同时反对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两种频段频段,并它反对一对一,以及一对多模式。

重要个性

  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中可编译的我的项目,并增加测试用例。

代码及测试apk请点击:WiFiDirectDemo

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

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

测试用例:

测试之前,记得首先关上手机WiFi,否则局部手机可能呈现闪退的问题。

设施反对必要条件:开启WiFI并容许获取定位权限。

以下为五种测试场景:

  1. 同一局域网场景:

两个手机连贯WLAN热点:如Fiture(2.4G/5G),在同一个网络下。
运行后果:两个手机能失常通信,能失常收发图片。

  1. 同一局域网拆散出两个路由:

一个手机连贯WLAN热点:如Fiture-Slim(5G),另一个手机连贯Fiture(2.4G/5G)

运行后果:两个手机能失常通信,能失常收发图片。

  1. AP隔离场景:

一个手机连贯4G网络虚构的人个热点,一个手机连贯Fiture(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

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

最初,如果你看到了此文,对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技术)