android - 在没有连接的情况下向手机广播数据包

标签 android ios networking wifi broadcasting

这是一个奇怪的问题,但我知道这是可能的。

我正在尝试以特定频率广播数据包,我希望运行应用程序的手机接收这些数据包。手机不需要连接到任何网络即可执行此操作,只需打开它的 wifi 即可。广播设备不需要从手机返回任何信息,也不需要保证每个数据包到手机的传送,就像 UDP 一样。

我从哪里开始?这对于没有生根的手机是否可行。是否有某种 FCC 法规禁止这样做(在标准 wifi 频谱上)。

我知道这是可能的,因为这正是路由器告诉手机它们可以连接的方式。在此先感谢您的任何输入。

最佳答案

虽然可能存在类似的技术,但我不熟悉 iOS 开发。

无需root

但在 Android 上需要粗粒度和/或细粒度的位置权限

您可以使用 WifiManager.getScanResults()扫描无线路由器广播。

结果中包含网络“名称”(SSID) 和路由器 MAC 地址 (BSSID)。您可以广播这些数据包并将数据编码到这些字段中。

也就是说,我希望您的消息很短,因为每个数据包将获得 38 个字节(32 SSID bytes + 6 个 MAC 地址字节)。

是的,有些 MAC 地址是特殊的或无效的,但如果您只是广播而不实际使用它们,它们仍然可以传输数据。

有根

根据无线芯片组和驱动程序支持,您可以将设备置于“监控模式”,这样您就可以访问原始数据包数据。

主要缺点是没有官方支持。

您可能会从 Google search 中找到一些 hacky 方法来执行此操作但我无法找到适用于所有(甚至大多数)设备的通用解决方案。

关于android - 在没有连接的情况下向手机广播数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757465/

相关文章:

Android WebView 呈现空白/白色, View 不会在 css 更改或 HTML 更改时更新,动画不连贯

android - Eclipse ADB 错误 [Ubuntu 13.04]

ios - 在 XMPP IOS 框架 (XMPPFramework) 中启用 BOSH 服务以创建基于聊天的应用程序

java - 将 RMI 限制到一个端口的含义

networking - recvfrom 没有收到来自客户端的任何信息,但客户端正在发送信息

android - CardView背景颜色被修剪

Android,让文本切换器成为中心?

ios - swift 协议(protocol) : Adding Protocol conformance to an Instance

ios - 添加注释时 MKMapView 崩溃

java - 服务器返回 HTTP 响应代码 : 523 for URL: http