我想通过网络服务发现连接多个Android设备。我想使用星形拓扑。因此设备上应该发现并且其他人应该注册由发现者发现的服务。为此,我使用了NSD Chat(https://github.com/gauravcanon/NsdChat)NsdHelper并对其进行了少许更改,因此在解析了建立连接的服务后便调用了回调。如果我使用的是三台设备,这通常可以正常工作。两个广告主和一个发现者。服务得到解决,并建立了连接。如果我再得到一个第三位广告客户,则它会在所有尝试的80%中崩溃。原因是在onServiceResolved
的{{1}}函数中传递的serviceInfo包含解析电话的ip地址,而不包含广告电话的ip地址。端口正确,服务名也正确。这真是个奇怪的行为,我不知道该如何调试。我正在使用bonjour浏览器查看所有已注册的服务,并且所有服务的注册都很好。包含正确的IP地址和端口的所有服务信息。我还尝试了没有建立连接的纯发现过程。同样的失败。有时,解析程序的IP地址在serviceinfo中。它也可能在第一次发现和第二次发现时发生,但很可能在第三次发现时发生。
我将在下面发布我的NsdHelper代码。我现在进行了一些编辑,因为我尝试在解决之后再次开始发现过程,因此NSD Chat会有更多差异,但是错误仍然存在。
是否有人通过NSDManager在多个设备上使用Android的NSD实现?对你有用吗?你在做什么不同?
与某人遇到相同问题(Android, NSD/DNS-SD: NsdManager unreliable discovery and IP resolution)有关的主题。我无法想象这个错误仍然是3年前的事情?
我很感谢每一个提示!
ResolveListener
}