Android 并发安卓-你好发现可能吗?
我正在尝试使用Bonjour功能来检测我的应用程序的其他实例,并使用WiFi p2p通信。我的应用程序包括一个服务器和一个客户端。(无头)服务器不断地宣布其服务,而客户端则寻找服务器。当客户端看到服务器的“你好”公告时,它会宣布其本地服务,并且连接由服务器启动——所有这些都会使PBC对话框在客户端设备上发生 所有这些似乎都可以正常工作,只是当客户端看到服务器时服务发现被终止。由于客户端本地服务的公告将由服务器的存在(加上用户交互)触发,因此服务器需要接收客户端服务公告Android 并发安卓-你好发现可能吗?,android,bonjour,wifi-direct,service-discovery,Android,Bonjour,Wifi Direct,Service Discovery,我正在尝试使用Bonjour功能来检测我的应用程序的其他实例,并使用WiFi p2p通信。我的应用程序包括一个服务器和一个客户端。(无头)服务器不断地宣布其服务,而客户端则寻找服务器。当客户端看到服务器的“你好”公告时,它会宣布其本地服务,并且连接由服务器启动——所有这些都会使PBC对话框在客户端设备上发生 所有这些似乎都可以正常工作,只是当客户端看到服务器时服务发现被终止。由于客户端本地服务的公告将由服务器的存在(加上用户交互)触发,因此服务器需要接收客户端服务公告 它不起作用。《你好协议》有
它不起作用。《你好协议》有限制吗?是否只有一个部分在为本地服务做广告?或者这是android实现中的一个限制?理论上它应该可以正常工作。所以我假设您的服务器一直在做服务的广告,同时也在做服务发现 如果是这样的话,那么你可能想看看我的文章。基本上,在我的测试中,我发现在重复的时间段内没有发现任何东西,因此,在进行测试时,一定要记得不时手动关闭/打开WiFi,或者重新启动设备以获得新的启动 第二个问题可能是,在我的观察中,我看到服务的设备广告只有在API处于活动状态时才可见,也就是说,请尝试继续对等发现过程,并查看它是否会使您的客户端可发现 另一个很好的问题可能是您的服务实例名太长,或者它可能是我还没有在API中发现的另一个特性
顺便说一句,如果您的安全模型允许您进行自动WiFi接入点连接,客户端可以在与服务器通话时切断“正常”WiFi。然后您可以考虑使用API的CureType方法创建一个访问点,您的客户端可以自动连接而不需要任何UI。当接收到的和状态都是启用了WIFI\u P2P\u state\u且不存在连接时,应用程序将调用
setDnsSdResponseListeners()
和addLocalService()
。服务类型为\u thingserver.\u tcp
,名称为\u thingserver
。txtRecord包含两行。。。之后,应用程序调用addServiceRequest()
和discoverServices()
。一切似乎都很好,如果我在客户端宣布其服务后重新启动应用程序,服务器将收到对ondnssdxtrecordavailable()
的回调。我认为发现时间约为60秒,重启应用程序时的用例要短得多。非常令人沮丧。。。是的,带有组形成的遗留API可能是一个替代方案,但bonjour发现确实是我想要的。添加一些代码链接。服务器和客户端