我正在尝试使用Bonjour功能来检测我的应用程序的其他实例并使用WiFi p2p通信。我的应用程序包括服务器和客户端部分。 (无头)服务器不断宣布其服务,客户端寻求服务器。当客户端看到服务器的bonjour公告时,它会宣布其本地服务,并且连接由服务器启动 - 所有这些都使得PBC对话在客户端设备上发生。
除了在客户端看到服务器时终止服务发现之外,所有这些似乎都能正常工作。由于客户端本地服务的广告将由服务器的存在(加上用户交互)触发,因此服务器需要提取客户端服务通知。
它不起作用。 bonjour协议有限制吗?是否只有一部分广告本地服务?或者这是Android实现的限制吗?
答案 0 :(得分:0)
在理论上它应该工作得很好。因此,我假设您的服务器一直在进行服务广告,同时也在进行服务发现。
如果是,那么您可能想查看我的Blog文章。基本上在我的测试中,我看到Discovery在重复的时间段内没有找到任何东西,因此当你进行测试时,请记得不时地手动关闭/打开WiFi,或重新启动设备以获得新的开始。
第二个问题可能是,在我的观察中,我已经看到服务的设备广告仅在API处于活动状态时可见,即,尝试继续对等发现过程,并查看它是否会使您的客户端可被发现
另一个不错的问题可能是您只是将实例名称与服务太长,或者它可能是我尚未在API中发现的另一个功能。
顺便说一句,如果您的安全模型允许您进行自动WiFi接入点连接,并且客户端可以接受切断他们的正常情况'与服务器通话时的WiFi。然后,您可以考虑使用API的CreateGroup方法创建一个访问点,客户端可以自动连接,而无需接受任何UI。