我正尝试使用Bonjour功能来检测我的应用程序的其他实例并使用WiFi p2p通信。我的应用程序包括一个服务器和客户端部分。 (无头)服务器不断公布其服务并且客户端寻找服务器。当客户端看到服务器的Bonjour通告时,它宣布了它的本地服务,并且连接由服务器启动 - 所有这些都使PBC对话框在客户端设备上发生。并发Android - bonjour发现可能吗?
所有这似乎工作正常,除了服务发现终止时客户端看到服务器。由于客户端本地服务的广告将由服务器的存在(加上用户交互)触发,所以服务器需要拾取客户端服务通知。
它不起作用。 bonjour协议有没有限制?只能有一部分广告本地服务吗?或者这是一个在android实现的限制?
我的服务器在应用程序启动时(它是服务)侦听“WIFI_P2P_CONNECTION_CHANGED_ACTION”和“WIFI_P2P_STATE_CHANGED_ACTION”。当收到和状态都是'WIFI_P2P_STATE_ENABLED'且没有连接时,应用程序调用'setDnsSdResponseListeners()'和'addLocalService()'。服务类型是'_thingserver._tcp',而痉挛的名称是'_thingserver'。 txtRecord包含两行...之后,应用程序调用'addServiceRequest()'和'discoverServices()'。 – user331244
这一切似乎都很好,如果我在客户端宣布它的服务后重新启动应用程序,服务器就会回调'onDnsSdTxtRecordAvailable()'。 我认为发现时间约为60秒,重新启动应用程序的用例要短得多。非常令人沮丧... 是的,与组形成的遗留API可能是一种替代方案,但bonjour发现真的是我正在寻找的。 – user331244
添加一些链接到一些代码。服务器[link](https://github.com/jonasandero/wifithing/blob/master/src/com/example/wifithing/server/ServerService.java)和客户端[link](https://github.com) /jonasandero/wifithing/blob/master/src/com/example/wifithing/client/ClientService.java) – user331244