Android 在没有 Wifi 热点或 Wifi Direct 的情况下广播/接收数据

Android Broadcasting / Receiving Data without Wifi Hotspot or Wifi Direct

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

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

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

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

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

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

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

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

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

是可以实现的。你知道空压机吗?同样,你可以接收所有的数据包,即使不是你发给你的,你也可以发送任何类型的数据包,即使不是你发送的。