Wi-Fi Direct:在 Android 上构建基于 P2P 技术的局域网通信

这篇具有很好参考价值的文章主要介绍了Wi-Fi Direct:在 Android 上构建基于 P2P 技术的局域网通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 Android 应用中实现局域网内设备通信,可以使用 P2P(Peer-to-Peer)技术来实现。P2P 技术使得设备之间可以直接相互通信,而不必通过服务器或者其他中介设备。在 Android 中,你可以使用 Wi-Fi Direct 技术来实现 P2P 通信。

下面是一个简单的示例,演示如何在 Android 应用程序中使用 P2P 技术进行设备间通信:

  1. 添加 Wi-Fi Direct 权限

    首先,在 AndroidManifest.xml 文件中添加 Wi-Fi Direct 相关的权限:

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-feature android:name="android.hardware.wifi.direct" />
    
  2. 初始化 Wi-Fi Direct

    接下来,在你的 Activity 中初始化 Wi-Fi Direct:

    WifiP2pManager manager;
    Channel channel;
    
    manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
    channel = manager.initialize(this, getMainLooper(), null);
    
  3. 搜索设备

    为了查找附近的设备,可以执行以下操作:

    manager.discoverPeers(channel, new WifiP2pManager.ActionListener() {
        @Override
        public void onSuccess() {
            // 搜索成功
        }
    
        @Override
        public void onFailure(int reason) {
            // 搜索失败
        }
    });
    
  4. 获取设备列表

    执行上述操作后,你可以获取设备列表:

    manager.requestPeers(channel, new WifiP2pManager.PeerListListener() {
        @Override
        public void onPeersAvailable(WifiP2pDeviceList peers) {
            List<WifiP2pDevice> deviceList = new ArrayList<>(peers.getDeviceList());
            // 获取设备列表
        }
    });
    

    在这个回调函数中,你需要将设备列表保存在一个 List 中。

  5. 建立连接

    如果你想建立与另一个设备的连接,可以执行以下操作:

    WifiP2pConfig config = new WifiP2pConfig();
    config.deviceAddress = device.deviceAddress;
    config.wps.setup = WpsInfo.PBC;
    
    manager.connect(channel, config, new WifiP2pManager.ActionListener() {
        @Override
        public void onSuccess() {
            // 连接成功
        }
    
        @Override
        public void onFailure(int reason) {
            // 连接失败
        }
    });
    

    在这个代码片段中,你需要创建一个 WifiP2pConfig 对象来指定要连接的设备,然后使用 connect() 方法来建立连接。

  6. 传输数据

    如果连接成功,你可以使用 WifiP2pManager 实例来传输数据。例如,你可以使用 WifiP2pManager.send() 方法来发送数据:

    String data = "Hello, world!";
    byte[] bytes = data.getBytes();
    
    manager.requestConnectionInfo(channel, new WifiP2pManager.ConnectionInfoListener() {
        @Override
        public void onConnectionInfoAvailable(WifiP2pInfo info) {
            if (info.groupFormed && info.isGroupOwner) {
                // 如果当前设备是组长
                WifiP2pGroup group = info.group;
                InetAddress address = group.getOwner().deviceAddress;
    
                // 将数据发送给客户端
                manager.send(channel, address, 8888, bytes, new WifiP2pManager.ActionListener() {
                    @Override
                    public void onSuccess() {
                        // 发送成功
                    }
    
                    @Override
                    public void onFailure(int reason) {
                        // 发送失败
                    }
                });
            }
        }
    });
    

    需要注意的是,传输数据之前需要确保两台设备已经成功建立连接。

当然,上述示例只是一个简单的演示,实际应用中需要处理很多细节以保证文章来源地址https://www.toymoban.com/news/detail-475686.html

到了这里,关于Wi-Fi Direct:在 Android 上构建基于 P2P 技术的局域网通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 区块链核心技术-P2P网络

    点对点网络是区块链中核心的技术之一,主要关注的方面是为区块链提供一个稳定的网络结构,用于广播未被打包的交易(交易池中的交易)以及共识过的区块,部分共识算法也需要点对点的网络支撑(如PBFT),另外一个辅助功能,如以太坊的消息网络,也需要点对点网络的

    2023年04月17日
    浏览(10)
  • Android12 P2P 初始化

    目录  学习资料:Android Miracast 投屏 1. 开机log 2. WifiP2pService 启动

    2024年02月06日
    浏览(19)
  • Wi-Fi、4G、5G的物理层技术

    Wi-Fi、4G、5G的物理层技术

    时间轴 通信标准 支持频段 信道宽度 传输速率 是否兼容其他协议标准 1999 802.11a 5GHz 20MHz 54Mbit/s 不兼容 1999 802.11b 2.4GHz 20MHz 11Mbit/s 不兼容 2003 802.11g 2.4GHz 20MHz 54Mbit/s 兼容802.11b 2009 802.11n 2.4G5GHz 20/40MHz 300/450/600Mbit/s 兼容802.11a/b/g 2013 802.11ac 5GHz 80/160MHz 433/867/1730Mbit/s 兼容802.11a/n

    2024年01月21日
    浏览(6)
  • Android WiFi P2P数据传输

    WiFi P2P是指通过WiFi直接连接两台设备之间的无线点对点通信,不需要通过路由器或者互联网。这种技术被广泛应用于移动设备之间的文件共享、游戏联机、音乐播放等应用场景中。 WiFi P2P的优点在于可以在没有网络的情况下建立设备之间的连接,同时具有高速和低延迟的特点

    2024年02月07日
    浏览(14)
  • 物联网定位技术|实验报告|实验一 Wi-Fi指纹定位

    物联网定位技术|实验报告|实验一 Wi-Fi指纹定位

    实验1  Wi-Fi指纹定位 1. 实验目标 2. 实验背景 3. 实验原理 3.1 WIFI基础知识 3.2室内定位方法建模 3.3指纹定位算法 ①离线/训练阶段 ②在线/定位阶段 4.  关键代码 5. 实验结果 6. 室内定位误差分析 6.1 非视距传播 6.2 多径传播 6.3 阴影效应 7. 实验总结 物联网定位技术 实验报

    2023年04月27日
    浏览(17)
  • 如何用P2P技术为SRS媒体服务器节省带宽成本

    如何用P2P技术为SRS媒体服务器节省带宽成本

        直播流的重要性在当今社会已无需多言,动辄上百万人同时在线的直播场景也已屡见不鲜。随着越来越多的观众收看直播,如何有效降低带宽成本,提升播放体验已成为各大视频厂商和创业者共同面对的技术难题。假设有 10,000 名观众观看相同 1Mbps 比特率流的直播场景

    2024年02月22日
    浏览(11)
  • 转载: 又拍云【PrismCDN 】低延时的P2P HLS直播技术实践

    转载: 又拍云【PrismCDN 】低延时的P2P HLS直播技术实践

    低延时的P2P HLS直播技术实践 本文是第二部分《PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘》 [首页 Open Talk NO.41 | 2018 音视频技术沙龙·深圳站 低延时 WebP2P 直播技术实践 https://opentalk-blog.b0.upaiyun.com/prod/2018-06-12/aa2e26500fc0b2eba14939746aed4d15]() 讲师简介 又拍云 PrismCDN 项目

    2024年02月09日
    浏览(10)
  • STM32与无线通信技术的应用:蓝牙、Wi-Fi和LoRa

    STM32与无线通信技术的应用:蓝牙、Wi-Fi和LoRa

    STM32是一款广泛应用于嵌入式系统的微控制器单元(MCU),它可以与多种无线通信技术进行集成,包括蓝牙、Wi-Fi和LoRa。本文将分别介绍STM32与这三种无线通信技术的应用。 1. STM32与蓝牙应用 蓝牙技术是一种短距离无线通信技术,用于在设备之间传输数据。STM32可以与蓝牙模块集

    2024年04月27日
    浏览(9)
  • Dragonfly 基于 P2P 的文件和镜像分发系统

    Dragonfly 基于 P2P 的文件和镜像分发系统

    作者: 孙景文、吴迪 网络下载 提起网络下载领域,你应该首先会想到基于 TCP/IP 协议簇的 C/S 模式。这种模式希望每一个客户机都与服务器建立 TCP 连接,服务器轮询监听 TCP 连接并依次响应,如下图: 上世纪末期,基于 C/S 模式的思想,人们发展了 HTTP , FTP 等应用层协议。

    2024年01月15日
    浏览(21)
  • 基于个人服务器的P2P内网穿透

    基于个人服务器的P2P内网穿透

    作为一个重度桌游爱好者,最近和小伙伴沉迷TTS(桌游模拟器),但是TTS是基于P2P进行连接的,如果小伙伴都不在一个网络节点上就会非常卡顿,为了更好的玩游戏,最后使用了基于zerotier的内网穿透方案 用上了内网穿透之后,再也不会掉线了,桌游体验极其完美 原理 购买

    2024年02月08日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包