【问题标题】:Android broadcast communication without network connectionAndroid 广播通信无需网络连接
【发布时间】:2014-02-01 18:33:48
【问题描述】:

是否可以让 2 台 android 设备在不连接到同一网络的情况下从一台设备发送广播数据包(通过 wifi 技术)到另一台设备。

当 2 台设备没有任何网络连接时成像。

我的手机已经植根,我正尝试通过无线方式发送一个广播数据包(如信标数据包)并在另一部手机上捕获它。

我对每一种能达到预期结果的解决方案都持开放态度(不仅仅是广播技术)。

【问题讨论】:

  • 在这里回答,找不到你。你寻求的魔法!
  • 广播不用于网络连接,您可以使用其他一些技术在蓝牙设备之间传输数据
  • @Simon 这是什么意思??
  • @mohammedmomn 我正试图让它通过 WiFi 技术工作。谢谢
  • 您可以使用同步离线连接,但您的应用也将依赖于此处的连接

标签: android network-programming


【解决方案1】:

您想要的并不容易,但可能有一些方法可以实现,具体取决于您需要支持的设备。

WiFi P2P(WiFi Direct 接口的 Android 实现)确实可用于在设备之间创建临时连接,而无需将两者都连接到接入点。但是 - 您需要 Android 4.0 或更高版本以及支持 WiFi Direct 的设备。

API 包含一个发现协议,因此要实现类似广播的功能,您可以依次迭代设备。

Android 文档:http://developer.android.com/guide/topics/connectivity/wifip2p.html

当然 - 即使您已经实现了网络级连接,您仍然需要一个库来处理消息传递,而 Neo 建议的 RabbitMQ 可能非常适合。

如果您要广播的消息非常小(而且不是秘密!),另一种选择是操纵您的 WiFi 信号的 SSID。一条非常小的消息可以放在 SSID 中,然后通过轮询可用网络列表在其他设备上接收。看到这个问题:

Can an Android device broadcast an SSID?

知道你如何处理这件事会很有趣。

【讨论】:

  • 我的两部手机都支持 WiFi Direct :)。实际上,我正在考虑通过空中广播一个数据包并在另一部手机上捕获它(如接入点的信标数据包)。谢谢
  • 您的信息太大而无法塞入 SSID? (如果你有一个低级别的 API,也许你可以尝试篡改信标帧上的其他字段)。需要注意的一件事是,我认为要遵守某些国家/地区的许可限制,您必须在 Wi-Fi 频段中实际传输 Wi-Fi。创建自己的无线电协议并使用 Wi-Fi 硬件进行传输可能会令人不悦:-)
【解决方案2】:

您尝试通过 Wifi 网络执行的操作称为“Publisher Subscriber Framework

一个或多个安卓设备发布数据,一个或多个订阅者接收数据。

Java 在这个框架中有一个叫做 Java Messaging Service JMS

发布/订阅模型

发布/订阅模型支持将消息发布到特定的消息主题。订阅者可能会对接收特定消息主题的消息感兴趣。在这个模型中,发布者和订阅者都不知道对方。一个很好的类比是匿名公告板。

  1. 零个或多个消费者将收到消息。

  2. 发布者和订阅者之间存在时间依赖性。发布者必须为客户端创建一个消息主题 订阅。订阅者必须保持持续活跃 接收消息,除非它已建立持久订阅。 在这种情况下,订阅者不在时发布的消息 connected 将在重新连接时重新分配。

JMS 提供了一种将应用程序与提供数据的传输层分离的方法。通过使用所需提供者的 Java 命名和目录接口 (JNDI) 信息,可以使用相同的 Java 类与不同的 JMS 提供者进行通信。这些类首先使用连接工厂连接到队列或主题,然后使用填充和发送或发布消息。在接收端,客户端然后接收或订阅消息。

如果您认为这是您想要的,您可以使用 RabbitMQ for android.you 可以使用它通过本地网络发送消息

这是您可以开始的链接 LINK

【讨论】:

  • 问题是我没有本地网络。两部手机都打开了 WiFi,但没有连接到任何网络。这行得通吗?
  • 你能先在两台设备@Neo 之间共享 adhoc 连接吗?之后,rabbitMQ 似乎可以成为第二个主题。
【解决方案3】:

您可以使用 SSID(32 字节字符串)发送消息。对于发送的每条消息,都需要发送带有 32 字节消息的信标数据包,您的客户端可能会或可能不会收到。在您以某种方式发送加密字符串之前,其他人也会看到该消息。

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多