关于android:WLAN-直连对等连接或-P2P调研及iOS跨平台调研

52次阅读

共计 3919 个字符,预计需要花费 10 分钟才能阅读完成。

# 钻研背景

  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 技术)

正文完
 0