NetShare 中文文档 下载 App

WiFi Direct 技术如何支撑 NetShare 的网络共享

什么是 WiFi Direct

WiFi Direct 是 WiFi Alliance 从 2010 年开始推广的一套协议,让两台或多台设备不经过中间路由器直接建立点对点的无线连接。它的典型应用场景包括:Android Beam 文件传输、WiDi 屏幕镜像、游戏对战、近场打印等。Android 4.0(Ice Cream Sandwich)开始原生支持,iOS 上对应的技术叫 AirDrop。

在底层,WiFi Direct 不是一个新的物理层协议,它跑在标准的 802.11 之上。设备之间通过 P2P Group 来组织角色:

一个典型的 WiFi Direct 会话流程:

  1. 设备发现:设备通过 Wi-Fi Direct 的服务发现协议(基于 mDNS 和 DNS-SD)找到附近支持 P2P 的设备
  2. 角色协商:通过 P2P Group Owner Negotiation 确定谁当 GO、谁当 Client
  3. 握手认证:WPA2-Personal 加密握手,GO 生成随机密码
  4. IP 分配:GO 通过内置 DHCP 服务器给 Client 分配 192.168.49.x 网段的地址
  5. 数据传输:P2P 网络内直接通信,不经过外网

WiFi Direct 和系统热点的关系

WiFi Direct 组主人和系统热点在某些场景下看起来很像——都是广播一个 SSID,其他设备扫描后连接。但它们在 Android 系统内部走的是完全不同的代码路径:

维度系统热点WiFi Direct GO
创建入口WifiManager.setWifiApEnabled()WifiP2pManager.createGroup()
API 可见性隐藏 API,Android 12+ 白名单公开 API,任何应用可调
默认网段192.168.43.x192.168.49.x
运营商感知是(Carrier Config 管控)否(不属于 tethering API)
加密方式WPA2/WPA3-PersonalWPA2-Personal

NetShare 利用的就是这个 API 可见性差异——WifiP2pManager 从头到尾都是 Google 公开给第三方应用的,不受运营商配置的任何影响。

接收端设备的连接体验

当 NetShare 成为 Group Owner 后,其他设备扫描 WiFi 时会看到一个普通的 WiFi 网络(SSID 和密码由 NetShare 界面展示),连接过程和连任何家庭路由器完全一样,只是:

这也是为什么 NetShare 能在不做任何设备适配的情况下兼容如此广泛的接收端——从 Windows 笔记本到 Switch 游戏机,只要能连 WiFi 就能扫描到它。

关键限制

WiFi Direct 有几个内在的限制决定了 NetShare 的边界: