Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 并发安卓-你好发现可能吗?_Android_Bonjour_Wifi Direct_Service Discovery - Fatal编程技术网

Android 并发安卓-你好发现可能吗?

Android 并发安卓-你好发现可能吗?,android,bonjour,wifi-direct,service-discovery,Android,Bonjour,Wifi Direct,Service Discovery,我正在尝试使用Bonjour功能来检测我的应用程序的其他实例,并使用WiFi p2p通信。我的应用程序包括一个服务器和一个客户端。(无头)服务器不断地宣布其服务,而客户端则寻找服务器。当客户端看到服务器的“你好”公告时,它会宣布其本地服务,并且连接由服务器启动——所有这些都会使PBC对话框在客户端设备上发生 所有这些似乎都可以正常工作,只是当客户端看到服务器时服务发现被终止。由于客户端本地服务的公告将由服务器的存在(加上用户交互)触发,因此服务器需要接收客户端服务公告 它不起作用。《你好协议》有

我正在尝试使用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发现确实是我想要的。添加一些代码链接。服务器和客户端