遵循此处的文档:

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

只需将数据放在WifiP2pDnsSdServiceInfo对象中,就可以将数据广播到所有具有WiFi Direct的附近设备,而无需建立连接。当我尝试在多个附近的设备之间建立一个简单的P2P消息传递应用程序时,此功能可满足我的目的。但是,这似乎是对API的滥用,因为它旨在携带信息以建立连接并宣告服务。我的问题是:

  • 以这种方式发送数据的优点和缺点(请忽略安全性)?
  • 发送/接收消息是否会有延迟。
  • 对电池生命周期有何影响?
  • 最佳答案

  • 传递给WifiP2pDnsSdServiceInfo对象的键/值对将封装到DNS-Based Service Discovery中指定的DNS多播消息中。
  • WiFi上的多播流量特别昂贵,因此不建议将其用于消息传递。仅用于诸如服务发现之类的重要事情。
  • 根据实现(android),under框架可能会在调用回调之前合并所有服务发现记录/响应。这可能会为您的简单P2P消息传递增加大量(甚至是不可预测的)延迟。
  • 这基本上是DNS消息传递,因此您的“消息”可能会在本地缓存。 DNS查询还可以尝试中级优化,例如池化,重试,查询过滤,优先级排序等。
  • 没有可靠性保证,因此您的消息可能会丢失。
  • 此处使用的多播流量可能会导致大量的battery drain on android, see here
  • 关于android - 在Android WiFi Direct服务发现中发送数据而不是进行连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26367191/

    10-11 22:16
    查看更多