没有 Wifi 热点或 Wifi 直连的 Android 广播/接收数据

标签 android wifi broadcast wifip2p wireless

我的问题是,是否可以在不建立 p2p 连接的情况下通过 wifi 广播在多个 android 设备之间发送和接收数据?

我们的教授要求我们设计一个无线网络系统,在这个系统中,你在你的安卓手机中广播一条消息,附近的其他安卓手机接收到它并再次广播,这样其他手机就可以接收到它,这样继续下去。通过这种方式,例如,当有人在教室或咖啡馆写了一条消息时,每个人都可以收到并再次广播。 (就像一个临时网络系统)。虽然我的教授认为这是可以实现的,但我没有在网上找到任何像这种 android 网络系统的东西。所以我的问题又是是否可以做这样的事情?

任何有帮助的线索和引用资料都将不胜感激。

编辑:我不得不更改问题的标题。

我找不到合适的解决方案,所以到目前为止我尝试了以下方法:我使用 Wifi 热点设置了一个 UDP 消息传递应用程序(它非常适合多客户端)。打开热点的手机是服务器,其他连接到热点的手机是客户端。然后,我决定将这个系统变成一个类似 adhoc 的系统,其中会有多个热点,客户端将按循环顺序连接到它们并充当这些服务器之间的桥梁。(每一秒,它们都会切换到其他热点,反之亦然。)因此,它们会将消息从一个网络传送到另一个网络。 (我知道这是非常低效的,而且容易出现时间延迟;但这是我迄今为止唯一想到的想法。)

当我把这个系统告诉我的教授时,他说它太复杂了,我只需要从一个设备广播一个消息到一个公共(public) channel (没有建立网络连接),其他设备就会听这个广播 channel (不连接到网络系统),接收消息并将自己的消息连同接收到的消息再次广播到该 channel ,如我在问题正文中所述。 (他从不提热点、Wifi direct 等)他甚至告诉我,我唯一需要做的就是想得更简单,并使用 802.11 的特性。但是,我认为建立这样一个无线系统并不容易,至少对于尚不支持临时系统的 Android 来说是这样。因此,我们将不胜感激任何帮助。谢谢!

最佳答案

上周发布的 Google Play 服务中的 Nearby Connections API 使用 WiFi 多播:https://developers.google.com/games/services/android/nearby

它适用于已在同一 WiFi 网络中的设备。但是,它使用主机/客户端模型,不适用于 WiFi 直连或有线热点连接。

您还可以使用来自 ICS 的 WiFi 直接 API:https://developer.android.com/guide/topics/connectivity/wifip2p.html 您可以通过 WiFi 直接将多个设备连接在一起,因此按照@willis 的建议发送 UDP 数据包似乎是可行的方法

关于没有 Wifi 热点或 Wifi 直连的 Android 广播/接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820225/

相关文章:

java - 使用相机拍照时,我可以在 Android 应用程序中找到俯仰角吗?

Android 以编程方式配对后自动连接蓝牙设备

java - Wi-fi direct android 中设备列表的 Intent

ios - 检查 Wi-Fi 开关是否处于 ON 或 OFF 状态

apache-spark - 评估 Spark 广播变量的最大大小

android - 如果应用程序已经运行(Android 模拟器、Lollipop),则仅捕获 BOOT_COMPLETED 广播

Android Studio 导入错误

javascript - 热点插件 scanWifi() 在 Android ionic cordova 中不起作用

android: 如何收听 "sd card removed unexpectedly"

Android 从 listView onClick 获取正确的信息