我正在使用JmDNS注册服务,并想在iOS上发现它。我可以使用JmDNS客户端发现服务,也可以发现网络上的其他一些服务。问题是我无法在iOS应用中发现我的服务,但是我看到了很多其他服务,但是在JmDNS客户端中却看不到任何其他服务。我一直在使用Network Browser iOS应用程序进行测试,它可以看到许多其他服务,但是我的JmDNS客户端看不到任何服务。
两批找到的服务之间最明显的区别是,iOS应用程序找到的所有服务的名称均为._tcp.local。并且JmDNS客户端找到的名称全为._http._tcp.local。
我显然缺少ZeroConfig的一些关键方面,因为我希望在两个地方都能看到相同的服务,这是我自己的以及网络上所有其他的服务。
我尝试将name._http._tcp更改为name._tcp,似乎要做的就是做到这一点,这样我就无法在任何地方发现JnDNS服务。我还尝试了各种命名组合。
public final static String REMOTE_TYPE = "_http._tcp.local.";
final HashMap<String, String> values = new HashMap<String, String>();
values.put("DvNm", "Sample-" + id);
ServiceInfo pairservice = ServiceInfo.create(REMOTE_TYPE, "sample", 1025, 0, 0, values);
jmdns.registerService(pairservice);
我希望在两个地方都能看到相同的服务,无论是我自己还是网络上的所有其他服务。
最佳答案
我仍然在挖掘,但是我确实找到了最完整的Bonjour浏览器,该浏览器可以解决问题,并且可以看到仅在不同平台上单独看到的所有不同服务。我原本希望看到所有基于单个请求的内容,但是此浏览器发出了大量请求以完成任务。可以从Apple应用程序商店中获取Flame浏览器,但是幸运的是,该代码也可以在GitHub上获得。它写得很好并且易于遵循,因此,如果您遇到此问题,请检查一下。
https://github.com/tominsam/flametouch
关于java - JmDNS与iOS Bonjour的互操作性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58682823/