遵循此处的文档:
http://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html
似乎可以通过仅将数据放入WifiP2pDnsSdServiceInfo对象,向没有建立连接的所有附近具有WiFi Direct的设备广播数据。这适用于我的目的,因为我试图在多个附近的设备之间建立一个简单的P2P消息传递应用程序。然而,这似乎是对API的误用,因为它旨在携带信息以建立连接并宣传服务。我的问题是:
答案 0 :(得分:6)
您传递到WifiP2pDnsSdServiceInfo
对象的键/值对将被封装到DNS多播消息中,如DNS-Based Service Discovery中所述。
WiFi上的多播流量特别昂贵,因此不建议将其用于消息传递。仅适用于服务发现等关键事项。
根据实现(android),under框架可能会在调用回调之前汇集所有服务发现记录/响应。这可能会为您的简单P2P消息传递增加显着的(甚至是不可预测的)延迟。
这基本上是一个DNS消息,所以你的消息"可以在本地缓存。 DNS查询还可以尝试中级优化,如池化,重试,查询过滤,优先级排序等。
没有可靠性保证,因此您的消息可能会丢失。
此处使用的多播流量可能导致重大battery drain on android, see here