在Android WiFi Direct服务发现中发送数据而不是连接

ajn*_*ral 3 android wifi-direct

遵循以下文档:

http://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html

通过将数据放入WifiP2pDnsSdServiceInfo对象,似乎可以向没有建立连接的所有附近具有WiFi Direct的设备广播数据.这适用于我的目的,因为我试图在多个附近的设备之间建立一个简单的P2P消息传递应用程序.然而,这似乎是对API的误用,因为它旨在携带信息以建立连接并宣传服务.我的问题是:

  • 以这种方式发送数据有哪些优缺点(请忽略安全性)?
  • 发送/接收的消息是否会有延迟.
  • 对电池寿命的影响是什么样的?

ash*_*oke 6

  • 传递给WifiP2pDnsSdServiceInfo对象的键/值对将被封装到DNS多播消息中,如基于DNS的服务发现中所指定.

  • WiFi上的多播流量特别昂贵,因此不建议将其用于消息传递.仅适用于服务发现等关键事项.

  • 根据实现(android),under框架可以在调用回调之前汇集所有服务发现记录/响应.这可能会为您的简单P2P消息传递增加显着(甚至不可预测)的延迟.

  • 这基本上是一个DNS消息传递,因此您的"消息"可以在本地缓存.DNS查询还可以尝试中级优化,如池化,重试,查询过滤,优先级排序等.

  • 没有可靠性保证,因此您的消息可能会丢失.

  • 这里使用的多播流量可能会导致Android上大量的电池消耗,请参见此处