当前位置: 首页 > 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;并顺利满足市场需求。在支撑企业持续创新和竞争…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...