当前位置: 首页 > news >正文

Wi-Fi Direct (P2P)原理及功能介绍

目录

  • Wi-Fi Direct (P2P)介绍
    • Wi-Fi Direct P2P 概述
    • P2P-GO(P2P Group Owner)
    • 工作流程
  • wifi-Direct使用
    • windows11 wifi-direct
    • Openwrt
    • wifi的concurrent mode
  • Linux环境下的配置工具
  • 必联wifi芯片P2P支持
  • REF


Wi-Fi Direct (P2P)介绍

Wi-Fi Direct P2P 概述

  • 定义:Wi-Fi Direct P2P 是一种允许支持相应硬件的设备无需中间接入点,直接通过 Wi-Fi 相互连接的技术。
  • 特点
    • 便捷性:设备之间可以快速、直接地建立连接,无需依赖传统的无线路由器或接入点,方便在没有网络基础设施的环境中使用。
    • 高速性:能够提供比蓝牙等其他短距离通信技术更高的数据传输速率,适用于大文件传输、高清视频流媒体等对带宽要求较高的应用。
    • 安全性:采用了与传统 Wi-Fi 网络相似的安全机制,如 WPA2 加密等,确保设备之间通信的安全性。
    • 兼容性:不同制造商的符合 Wi-Fi Direct 标准的设备之间可以相互连接和通信,具有较好的兼容性。

P2P-GO(P2P Group Owner)

  • 定义:在 Wi-Fi Direct P2P 网络中,P2P-GO 是指 P2P 组的所有者,也被称为软接入点(Soft-AP)。
  • 作用
    • 网络管理:负责管理 P2P 组内的设备连接、数据传输和网络资源分配等。其他设备需要通过与 P2P-GO 建立连接来加入 P2P 组并进行通信。
    • 服务提供:可以提供网络接入、文件共享、打印服务等功能,使其他设备能够访问和使用这些服务。
    • 设备发现:在 P2P 组形成过程中,P2P-GO 通常会参与设备发现和协商过程,确定哪些设备可以加入 P2P 组以及它们的角色和权限。

工作流程

  1. 设备发现:支持 Wi-Fi Direct P2P 的设备在开启该功能后,会自动搜索附近的其他 P2P 设备。设备可以通过发送探测请求和接收探测响应来发现其他设备的存在。
  2. P2P 组形成:在发现其他设备后,设备之间会进行协商,确定哪个设备将成为 P2P-GO。这可以通过自动协商或手动指定的方式进行。一旦确定了 P2P-GO,其他设备就可以向 P2P-GO 发送连接请求,请求加入 P2P 组。
  3. 连接建立:P2P-GO 收到连接请求后,会对请求进行验证和授权。如果请求合法,P2P-GO 会与请求设备建立连接,并为其分配一个唯一的 IP 地址。连接建立后,设备之间就可以开始进行数据传输和通信。
  4. 数据传输:在 P2P 组内,设备之间可以通过 TCP/IP 协议或其他应用层协议进行数据传输。P2P-GO 会负责转发数据帧,确保数据能够在组内的设备之间正确传输。
  5. P2P 组拆除:当设备之间的通信结束或需要断开连接时,设备可以向 P2P-GO 发送拆除连接的请求。P2P-GO 收到请求后,会释放相关的网络资源,并拆除与该设备的连接。如果 P2P 组内的所有设备都断开连接,P2P 组将自动解散

wifi-Direct使用

windows11 wifi-direct

使用IPCONFIG /ALL可查看设备是否支持p2p.

image-20250106095209898

win11可通过wifi-direct连接支持p2p的显示器或打印机等设备。

image-20250106095131592

Openwrt

Openwrt平台下, iw命令查询Supported interface modes:字段, 可显示当前wifi网卡支持的模式。P2P-client、P2P-GO表明其支持wifi-direct。

iw list
Wiphy phy0wiphy index: 0max # scan SSIDs: 32max scan IEs length: 465 bytesmax # sched scan SSIDs: 0max # match sets: 0Retry short limit: 7Retry long limit: 4Coverage class: 0 (up to 0m)Device supports AP-side u-APSD.Available Antennas: TX 0 RX 0Supported interface modes:* IBSS* managed* AP* AP/VLAN* monitor* P2P-client* P2P-GOBand 1:Capabilities: 0x16eHT20/HT40SM Power Save disabledRX HT20 SGIRX HT40 SGIRX STBC 1-streamMax AMSDU length: 3839 bytesNo DSSS/CCK HT40Maximum RX AMPDU length 32767 bytes (exponent: 0x002)Minimum RX AMPDU time spacing: 8 usec (0x06)HT Max RX data rate: 72 MbpsHT TX/RX MCS rate indexes supported: 0-7Frequencies:* 2412 MHz [1] (20.0 dBm)* 2417 MHz [2] (20.0 dBm)* 2422 MHz [3] (20.0 dBm)* 2427 MHz [4] (20.0 dBm)* 2432 MHz [5] (20.0 dBm)* 2437 MHz [6] (20.0 dBm)* 2442 MHz [7] (20.0 dBm)* 2447 MHz [8] (20.0 dBm)* 2452 MHz [9] (20.0 dBm)* 2457 MHz [10] (20.0 dBm)* 2462 MHz [11] (20.0 dBm)* 2467 MHz [12] (20.0 dBm) (no IR)* 2472 MHz [13] (20.0 dBm) (no IR)* 2484 MHz [14] (20.0 dBm) (no IR)valid interface combinations:* #{ managed } <= 2, #{ IBSS, AP, P2P-client, P2P-GO } <= 1,total <= 2, #channels <= 1, STA/AP BI must matchHT Capability overrides:* MCS: ff ff ff ff ff ff ff ff ff ff* maximum A-MSDU length* supported channel width* short GI for 40 MHz* max A-MPDU length exponent* min MPDU start spacingmax # scan plans: 1max scan plan interval: -1max scan plan iterations: 0Supported extended features:* [ RRM ]: RRM* [ FILS_STA ]: STA FILS (Fast Initial Link Setup)* [ CONTROL_PORT_OVER_NL80211 ]: control port over nl80211* [ CONTROL_PORT_NO_PREAUTH ]: disable pre-auth over nl80211 control port support* [ DEL_IBSS_STA ]: deletion of IBSS station support* [ SCAN_FREQ_KHZ ]: scan on kHz frequency support* [ CONTROL_PORT_OVER_NL80211_TX_STATUS ]: tx status for nl80211 control port support

wifi的concurrent mode

wifi的共存模式,有以下几种:

  • station mode + station mode

  • station mode + ap mode

  • station mode + p2p mode

  • p2p mode + ap mode

以上各模式中的station,ap,p2p在驱动中都需要对应的网络接口的,对于p2p mode + ap mode, 加载驱动后就会出现wlan0,p2p0两个网络接口。

image-20250106113014713

Linux环境下的配置工具

工作模式使用的工具
STAwpa_supplicant
APhostapd
P2Pwpa_cli

必联wifi芯片P2P支持

aic8800d_linux_sdk_V3.0_2024_0712_e2a932c1\USB\driver_fw\drivers\aic8800\aic8800_fdrv\Makefile

CONFIG_USB_NO_TRANS_DMA_MAP = n
CONFIG_GPIO_WAKEUP = n
CONFIG_CREATE_TRACE_POINTS = n
CONFIG_SUPPORT_REALTIME_CHANGE_MAC = y
CONFIG_USE_USB_ZERO_PACKET = y
CONFIG_DEBUG_FS = n
#使能P2P
CONFIG_STA_SCAN_WHEN_P2P_WORKING = y
CONFIG_SET_VENDOR_EXTENSION_IE = n
CONFIG_VENDOR_GPIO = n
CONFIG_FWLOG_EN = n
CONFIG_FOR_IPCAM = n
CONFIG_5M10M = n

REF

什么是 Wi-Fi Direct 以及如何判断您的计算机是否支持它

[WiFi Direct:它的用途以及拥有它的设备](https://itigic.com/zh-CN/wifi-direct-what-it-is-used-for-and-what-devices-have-it/#:~:text=为此,您只需按照我们将要展示的一系列步骤进行操作,您就可以知道是否您可以连接其他设备或交换文件。 您要做的第一件事是转到开始,进入终端或命令提示符并执行以下命令: 执行后,将显示有关您的连接的非常完整的信息。 您将看到网卡上的数据、MAC,地址、IP、适配器型号……您还会看到(或没有)提及 WiFi Direct。 您将看到类似于下图中的内容,这证实了我们的设备是兼容的。)

wifi direct—深入理解Wi-Fi P2P - 张同光 - 博客园

linux环境的wifi配置工具及工作模式区分介绍_linux wifi p2p-CSDN博客

ap/p2p共存互通:

ps://www.cnblogs.com/ztguang/p/12649163.html)

linux环境的wifi配置工具及工作模式区分介绍_linux wifi p2p-CSDN博客

ap/p2p共存互通:

关于WIFI的工作模式–AP MODE/STATION MODE-CSDN博客

相关文章:

Wi-Fi Direct (P2P)原理及功能介绍

目录 Wi-Fi Direct &#xff08;P2P&#xff09;介绍Wi-Fi Direct P2P 概述P2P-GO&#xff08;P2P Group Owner&#xff09;工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct &#xff…...

Perl语言的数据结构

Perl语言的数据结构 Perl是一种功能强大的、灵活的脚本语言&#xff0c;广泛用于文本处理、系统管理、网络编程以及许多其他领域。其灵活性不仅体现在语法上&#xff0c;还体现在其丰富的数据结构上。本文将深入探讨Perl的主要数据结构&#xff0c;包括标量、数组、哈希以及引…...

【MFC】设置CTreeCtrl单个节点的文字颜色

问题 功能调整需要依据不同状态设置树控件中单个节点的文字颜色。 分析 1、CTreeCtrl本身有设置文字颜色的接口SetTextColor&#xff0c;但是这个接口是设置树控件整体的文字颜色。 2、在自定义接口可以对树控件单个节点进行更新文字颜色和背景颜色&#xff0c;接收自定义绘制…...

【CSS】设置滚动条样式

文章目录 基本语法用法案例 基本语法 在CSS中&#xff0c;可以使用 ::-webkit-scrollbar 和相关伪元素来为滚动条设置样式&#xff0c;但请注意这些伪元素是非标准的&#xff0c;主要用于WebKit内核浏览器&#xff08;如Chrome、Safari&#xff09;。 ::-webkit-scrollbar CSS …...

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务&#xff0c;如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信&#xff0c;接收作业并提交到执行队列&#xff0c;Gitlab-Runner从队列中获取作业&#xff0c;并允许在不同环境下进行作…...

代码随想录 哈希 test 8

18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 与三数之和类似&#xff0c;重点在剪枝和去重的区别&#xff0c;由于target可正可负&#xff0c;因此需要分两种情况讨论&#xff0c;如果target为正&#xff0c;则若当前选择的元素之和大于target&#xff0c;需要跳出这…...

[SAP ABAP] 使用LOOP AT...ASSIGNING FIELD-SYMBOL 直接更新内表数据

使用 LOOP AT...ASSIGNING FIELD-SYMBOL... 可以直接修改内表中的数据&#xff0c;而不需要先将内表数据复制到相应的工作区&#xff0c;然后再更新回内表中&#xff0c;从而提高性能 针对上述代码进行优化&#xff0c;我们使用LOOP AT...ASSIGNING FIELD-SYMBOL 直接更新内表数…...

MySQL数据导出导入

一、数据导出 1.导出全库备份到本地的目录 mysqldump -u$USER -p$PASSWD -h127.0.0.1 -P3306 --routines--default-character-setutf8 --lock-all-tables --add-drop-database -A >db.all.sql 2.导出指定库到本地的目录(例如mysql库) mysqldump -u$USER -p$PASSWD -h127.…...

leetcode 127. 单词接龙

题目&#xff1a;127. 单词接龙 - 力扣&#xff08;LeetCode&#xff09; 先建立一颗trie树&#xff0c;从beginWord开始bfs&#xff1b;bfs的过程中&#xff0c;对trie树进行dfs寻找“只差一个字母”的其他未遍历到的字符串&#xff1b;直到bfs遍历到endWord。 struct Node …...

如何开发一个支持海量分布式锁的应用库

分布式锁是一种用于控制分布式系统中资源访问的同步机制&#xff0c;确保在任意时刻只有一个客户端能够获取到锁&#xff0c;并对共享资源进行操作。 作用 1.保证数据一致性&#xff1a;在多个节点并发执行的情况下&#xff0c;分布式锁可以防止同时修改同一份数据&#xff0c…...

JavaScript系列(17)--类型系统模拟

JavaScript类型系统模拟 &#x1f3ad; 今天&#xff0c;让我们深入探讨JavaScript中的类型系统模拟。虽然JavaScript是一门动态类型语言&#xff0c;但我们可以通过各种方式来实现类型检查和验证。 类型系统基础 &#x1f31f; &#x1f4a1; 小知识&#xff1a;JavaScript是…...

openssl编译

关于windows下&#xff0c;openssl编译 环境准备 安装 perl:https://djvniu.jb51.net/200906/tools/ActivePerl5_64.rar安装nasm&#xff1a;https://www.nasm.us/pub/nasm/releasebuilds/2.13.01/win64/nasm-2.13.01-installer-x64.exe下载opensll源码&#xff1a;https://o…...

校园网络综合布线系统设计与实践

校园网络综合布线系统设计与实践 摘要&#xff1a;随着信息时代的发展&#xff0c;网络综合布线显得更加重要。综合布线技术也日益引起人的重视。综合布线管理系统是一个实用性十分强的系统工程&#xff0c;同样又是现代社区信息化建设的基础与必要产品&#xff0c;是对多用途…...

如果商品信息更新,爬虫会失效吗?

当商品信息更新时&#xff0c;爬虫是否失效取决于更新的具体内容。以下是一些可能影响爬虫的因素&#xff1a; 可能导致爬虫失效的情况 HTML结构变化&#xff1a;如果 yiwugo 平台更新了商品详情页面的 HTML 结构&#xff0c;比如改变了元素的标签、类名或 ID&#xff0c;那么…...

【UE5 C++课程系列笔记】27——多线程基础——ControlFlow插件的基本使用

目录 步骤 一、搭建基本同步框架 二、添加委托 三、添加蓝图互动框架 四、修改为异步框架 完整代码 通过一个游戏初始化流程的示例来介绍“ControlFlows”的基本使用。 步骤 一、搭建基本同步框架 1. 勾选“ControlFlows”插件 2. 新建一个空白C类&#xff0c;这里…...

有收到腾讯委托律师事务所向AppStore投诉带有【水印相机】主标题名称App的开发者吗

近期&#xff0c;有多名开发者反馈&#xff0c;收到来自腾讯科技 (深圳) 有限公司委托北京的一家**诚律师事务所卞&#xff0c;写给AppStore的投诉邮件。 邮件内容主要说的是&#xff0c;腾讯注册了【水印相机】这四个字的商标&#xff0c;所以你们这些在AppStore上的app&…...

标定 3

标定场景与对应的方式 标定板标定主要应用场景: (1)无法获取到执行机构物理坐标值,比如相机固定,执行机构为传送带等 (2)相机存在畸变等非线性标定情况,需要进行畸变校正 (3)标定单像素精度 (4)获取两个相机之间的坐标系关系 标定板操作步骤: (1)确定好拍…...

用 C# 绘制谢尔宾斯基垫片

谢尔宾斯基垫片是一个三角形&#xff0c;分解成多个小三角形&#xff0c;如右图所示。有几种方法可以生成这种垫片。这里展示的方法是其中一种比较令人惊讶的方法。 程序从三个点开始&#xff08;图中圆圈所示&#xff09;。“当前位置”从其中一个点开始。为了生成后续点&…...

java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

今天在朋友机子上运行代码&#xff0c;在生成token的时候&#xff0c;遇到了这样一个问题&#xff1a; Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26) ~[jjwt-0.9.1.jar:0.…...

双因素身份验证技术在NPI区域邮件安全管控上的解决思路

在制造业中&#xff0c;NPI&#xff08;New Product Introduction&#xff0c;新产品导入&#xff09;区域是指专门负责新产品从概念到市场推出全过程的部门或团队。NPI 的目标是确保新产品能够高效、高质量地投入生产&#xff0c;并顺利满足市场需求。在支撑企业持续创新和竞争…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...