java - JmDNS 与 iOS Bonjour 的互操作性
问题描述
我正在使用 JmDNS 注册服务并希望在 iOS 上发现它。我可以使用 JmDNS 客户端发现该服务,也可以发现网络上的其他几个服务。问题是我无法在 iOS 应用程序中发现我的服务,但我确实看到了许多其他服务,但在 JmDNS 客户端中没有看到。我一直在使用网络浏览器 iOS 应用程序进行测试,它看到了许多其他服务,但我的 JmDNS 客户端没有看到任何服务。
两批找到的服务最明显的区别是iOS app找到的都是name._tcp.local的形式。而JmDNS客户端找到的都是name._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 浏览器,它解决了这个问题,并看到了我只在不同平台上单独看到的所有不同服务。我期待看到基于单个请求的所有内容,但是这个浏览器发出大量请求来完成工作。Flame 浏览器可从 Apple 应用商店获得,但幸运的是,代码也可在 GitHub 上获得。它写得很好,很容易理解,所以如果你有这个问题,请检查一下。
推荐阅读
- java - BeanCreationException spring boot 和 keycloak
- php - Paginate WPQuery redirect to page 1
- python - Python - 查找字符串列表中包含的唯一子字符串的索引,而无需遍历所有项目
- java - private final Card[]cards, how do I use this in another class
- android - 应用更改失败时自动执行“运行”
- angular - Cannot find name 'cordova'. ionic 5 build android
- sql - osquery suid_bin 用于列出所有系统 suid 位集
- text-to-speech - Speech API OneCore 中的 Sayaka 语音在哪里?
- php - DomPdf - 修复了所有页面中的标题,但它与表格一起折叠
- sql - 如果同一个表多次出现在查询中,我们每次都必须添加 WITH (NOLOCK) 吗?