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

时间:2014-10-14 17:54:51

标签: android wifi-direct

遵循此处的文档:

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

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

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

1 个答案:

答案 0 :(得分:6)

  • 您传递到WifiP2pDnsSdServiceInfo对象的键/值对将被封装到DNS多播消息中,如DNS-Based Service Discovery中所述。

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

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

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

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

  • 此处使用的多播流量可能导致重大battery drain on android, see here