【问题标题】:Android Broadcasting / Receiving Data without Wifi Hotspot or Wifi Direct没有 Wifi 热点或 Wifi Direct 的 Android 广播/接收数据
【发布时间】:2015-03-02 21:58:02
【问题描述】:

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

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

任何有用的线索和参考将不胜感激。

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

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

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

【问题讨论】:

  • 您可以使用 UDP 轻松广播数据报,UDP 是一种无连接协议。您所要做的就是在设备端解析数据报。这是 Android 中的一个简单 UDP 示例:code.google.com/p/boxeeremote/wiki/AndroidUDP
  • 感谢您的快速回复!对不起,如果我误解了,但 UDP 确实需要互联网连接,对吧?我们需要设计一个无线网络,没有任何互联网连接,只使用 wifi 技术。
  • 虽然您确实需要一个现有的 Wi-Fi 网络,但您不需要有效的互联网连接。已经有一些使用 UDP 通过 Wi-Fi 直接广播数据报的实验,尽管我不知道这有多成功。您可以在这里找到更多信息:stackoverflow.com/questions/15524593/…
  • 感谢您的建议!对于迟到的回复,我们深表歉意。我编辑了上一条消息。
  • @umit:你有这个问题的新解决方案吗?

标签: android wifi broadcast wifip2p wireless


【解决方案1】:

上周发布的 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 直连)。系统中的安卓手机可以向公共频道广播消息,它们也可以收听该频道的传入消息。是否有可能创建一个这样的硬编码通道,手机可以从中发送和接收消息?正如我所说,我的教授仍然坚持这种系统的可能性。
【解决方案2】:

它是可以实现的。你知道空中飞车吗?类似地,你可以接收所有没有发给你的包,你可以发送任何类型的包,甚至不是你发的。

【讨论】:

  • 是的,这种方式只能广播给接收者。数据帧中的数据字段是加密的,你可以使用暴露的长度字段作为编码数据。答案网址见主评论。
  • @RiceballLEE 你提到了加密,那个想广播,可以用开放系统,不使用加密吗?还是每个人都可以使用前缀密钥?
  • 在这里查看我的答案:android.stackexchange.com/questions/77569/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多