文章目录

  • 研究背景
  • Andorid端:WiFi-P2P
    • 官方定义
    • 其他定义
    • 重要特性
    • 扩展
    • 使用场景
  • Demo研究
    • Android端
    • iOS端
  • 第三方开源跨平台研究
  • 下一步方向
  • 参考

研究背景

  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热点:如Test(2.4G/5G),在同一个网络下。
    运行结果:两个手机能正常通信,能正常收发图片。

  2. 同一局域网分离出两个路由:
    一个手机连接WLAN热点:如Test-15G),另一个手机连接Test(2.4G/5G)

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

  1. AP隔离场景:
    一个手机连接4G网络虚拟的人个热点,一个手机连接Test(2.4G/5G)
    运行结果:两个手机能正常通信,能正常收发图片。
  2. 两个手机只需要打开WiFi,不需要连接任何网络。

运行结果:两个手机能正常通信,能正常收发图片。
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 跨平台调研相关推荐

  1. Android Wifi开发——WLAN直连(十三)

    WLAN 直连 (对等连接或P2P) 技术,通过 WLAN 进行直接互联.使用这些 API,您可以实现支持 WLAN P2P 的设备间相互发现和连接,从而获得比蓝牙连接更远距离的高速连接通信效果.对于 ...

  2. kotlin_08:wlan直连/wifi_p2p的页面跳转以及实时获取连接状态

    前言之前一段时间一直加班,淦.五一,有点时间,简单的陈述一下,wlan直连页面的跳转和状态获取以及监听. 1. 先看效果 2. 布局文件 2.1 wifi_p2p_actvity_main.xml & ...

  3. 对等连接 计算机网络,计算机网络-对等网及文件打印机共享.ppt

    计算机网络-对等网及文件打印机共享 计算机网络课件 郭文宏 guowh2003@ (使用 OfficeXP或 Office 2003 演示动画) 计算机网络的工作模式 在网络边缘的端系统中运行的程序之 ...

  4. p2p半分布式开源项目调研:

    p2p半分布式开源项目调研: 1.半分布式拓扑结构底层协议FastTrack: FastTrack是采用树型对等网络模型,是集中目录式网络结构的发展模式.处于网络模型中的节点自动组成树型结构,其中计算 ...

  5. android的wifi直连,WLAN 直连  |  Android 开源项目  |  Android Open Source Project

    WLAN 直连功能又称"WLAN 点对点",它允许支持设备直接使用 WLAN 直连协议发现其他设备并与之互连(无需连接到互联网或移动网络).此功能是基于 Wi-Fi 联盟 (WFA ...

  6. WLAN直连总体结构和相关流程概览(二)

    在上一篇 WLAN直连总体结构和相关流程概览(一) 中介绍了WLAN直连UI层及StateMachine.这里继续介绍framework层及Supplicant层. 在framework层,最主要有三 ...

  7. BT客户端源码分析之八:BT对等连接的建立过程

    作者:小马哥 日期:2005-01-09 rstevens2008 At hotmail.com 版权所有,未经允许,不得转载 转载请注明出处: http://www.wlm.com.cn/openi ...

  8. 高速通道 > 专有网络对等连接(关闭新购) > VPC互连

    VPC互连 更新时间:2020-03-26 17:54:51 编辑我的收藏 本页目录 背景信息 操作步骤 您可以通过创建对等连接实现VPC互通. 背景信息 注意 高速通道的对等连接功能于2019年6月 ...

  9. 天翼云内网服务器映射端口,天翼云服务器创建对等连接(不同账户组内网)

    pc6a学习分享小白有2台不同账户下的天翼云服务器.现在的需求是组建内网.不走公网连接.这里需要用到的功能为虚拟私有云 – 对等连接.组建内网的好处是不消耗公网连接宽带,且内网为1000M宽带. 天翼 ...

最新文章

  1. spring java code配置_Spring-09-使用Java的方式配置Spring
  2. Java中的Switch都支持String了,为什么不支持long?
  3. 怀旧服最新服务器塞卡尔,魔兽世界怀旧服:10个至今未开门的服务器!圣光服进度刚到20%!...
  4. 【实践】短视频场景下信息流广告的挑战和技术实践.pdf(附下载链接)
  5. 【Vijos1659】河蟹王国
  6. CCF所有领域best paper合集!发顶会论文必看!中国计算机学会推荐会议的Best paper~
  7. 操作系统第2章作业题答案
  8. win10快捷键【常用】桌面切换等快捷键
  9. python更新的命令_python升级命令
  10. python 实现发送手机短信验证码后台方法
  11. Windows 11 预览版来了?
  12. 大数据开发 - Java入门2
  13. 蓝魔法师(树形dp)
  14. 下载网易云课堂和B站的视频
  15. Powershell 通过POP3接收邮件
  16. 基于jsp的酒店管理系统
  17. 微信红包的随机算法是怎样实现的?
  18. 路由器WAN口和LAN口的IP地址的区别
  19. Eclipse ADT常用快捷键
  20. 既然选择了远方,便只顾风雨兼程----汪国真的诗

热门文章

  1. 中国冷兵器时代的十大勇将
  2. 《五子棋大师》iOS版隐私政策
  3. 深度系统linux15.3 32位下载,deepin 15.3|deepin linux 15.3下载|linux deepin 2016下载-游迅网...
  4. Android5.0、6.0、7.0去除WIFI感叹号
  5. 虚拟现实产业呈五大发展趋势
  6. 1015 - 计算几何之多边形的面积 - Build Your Home(POJ 3907)
  7. Linux中移动光标cw什么意思,linux常用指令详解
  8. 操作系统发展史_有史以来最好的操作系统的可怕的用户界面
  9. 两相混合式步进电机控制方法介绍
  10. 哪种ARM Cortex内核更适合我的应用:A系列、R系列、还是M系列?