除了JMDNS之外,还有其他的Java库可用于Bonjour/Zeroconf吗?

48

除了JMDNS之外,还有其他针对Bonjour/Zeroconf的Java库吗?


2
JMDNS有什么问题吗?(在他们迁移到GitHub之后;-)) - rü-
9个回答

36
我也很好奇目前最好的跨平台DNS-SD(Zeroconf,Bonjour,DNS自发现)库是什么。
听起来Apple的DNS-SD dnssd.jar是“官方”的Java库,需要在Windows,Linux等平台上支持本地库,但在Mac OSX上可以直接使用。
还有其他纯Java DNS-SD实现,但不清楚它们中是否有任何一个库像DNS-SD一样易于使用或完全测试过(其中一些项目似乎已经被放弃了2年)。
  1. 官方苹果DNS-SD mDNSResponder库
  2. mDNSResponder和jmDNS集成 - 已经有一些工作来创建一个库,为jmDNS和苹果的mDNSResponder实现提供通用的DNS-SD接口。使用jmDNS包装器的说明
  3. waiter - 被描述为“现代DNS库和有效的DNS-SD(服务发现)库”。它利用了Java NIO网络。
  4. jmDNS - JmDNS提供易于使用的纯Java mDNS实现,可在JDK 1.4及更高版本上运行
  5. JiveDNS - “JiveDNS是已停止开发的JmDNS库的分支,用于多播DNS服务发现和注册。”(它本身已经超过2年没有进行SVN更新)

2
另一个精彩的摘要:http://elliotth.blogspot.com/2009/03/registering-service-with-dns-sd-from.html - Gili
Thorbjørn,你能指向Eclipse代码库中使用它的一些代码吗?这将非常有帮助。谢谢! - Johnny
@Johnny,我相信它被用于Eclipse通信框架 - http://www.eclipse.org/ecf/ - 但我个人没有使用经验。 - Thorbjørn Ravn Andersen
3
JmDNS的表现不佳。我正在调查一个严重的错误,它会在错误的IP地址上进行接口公告,这是一种非常糟糕的错误类型,我宁愿使用其他库来避开这个问题,而不是修复它。此外,该库的维护者已经设置了其缺陷跟踪器的权限,使您无法提交新的缺陷报告,这是不道德的行为。 - Hakanai
1
应该提一下,waiter中的mDNS支持似乎是一个待办事项(“需要一种注册广播记录的方法”),因此它不能替代JmDNS。 至少目前还不能。 :( 还有另一个名为dnssdjava的DNS-SD库,其API看起来相当合理,但也缺乏组播支持,这意味着它也不能替代。 :( - Hakanai
如@carl所述,似乎Apple的DNS-SD jar已不再提供。dougnukem可以在答案中提到这一点,以使其更加突出。谢谢! - mateuscb

6

mdnsjava是一个为dnsjava(dnsjava.org)提供mDNS和DNS-SD支持的项目。与许多DNS-SD Java实现不同,mdnsjava支持完整的mDNS DNS RR解析,而不仅仅是服务解析。

https://code.google.com/p/mdnsjava/


使用mdnsjava:如何仅绑定到特定的网络接口? - JohnyTex
嘿,Posicks,你能看一下这个问题吗?https://dev59.com/KIfca4cB1Zd3GeqPns_5 - Martin L.

2

2

请尝试:

DNS-SD

-- 相同的 Java DNS-SD API 也可在 Bonjour for Windows、Bonjour for Linux、Solaris、*BSD 等中使用,使得 Java 软件可以跨越广泛的平台利用 Zeroconf 的 DNS 服务发现,而不仅限于 Mac OS X......


1

在Windows上,dns_sd.jar工作正常,可以从Apple(适用于Windows的SDK)下载。请注意,重新安装Bonjour可能会覆盖包含dns_sd.jar的Program Files / Bonjour目录。Rogue Amoeba的Airfoil就是其中一个例子,但他们声称使用了Apple原始安装程序。

在OSX上,dnssd.jar工作正常,但不再包含在最新的Java版本中,因为Oracle已经接管了责任。然而,该文件仍然存在于磁盘上,因为Apple的1.6 Java仍然在磁盘上。只需找到该文件并将其移动到最新Java的/ externals文件夹中即可。因此,很有趣又愚蠢的是,苹果公司为Windows实现Java DNS SD提供了一个功能良好的SDK,而对于自己的OSX则没有提供任何东西。我预计这只是因为苹果公司过于讨厌Java?

但是,是否有人知道airtunes协议的Java实现;今天的Airport Express和Apple TV使用的最新版本不同于早期Airport Express模型使用的版本?

我知道qTunes,但它无法与最新的Airtunes版本一起使用。(我可以通过Rogue Amoeba的Airfoil扬声器为Mac OS X使其正常工作)

我不会监控这个帖子,但可以通过chj@hdsoundlab.com联系我解决实际问题。


1

除非你的目标是向其他mDNS兼容应用程序宣布服务可用性或从其他应用程序消费mDNS服务,否则实现自己的基于广播的服务发现可能更有意义。


0
我一直在开发一个简单的、纯Java实现的mDNS服务发现。目前只支持同步浏览,但我计划在下一个版本中添加异步监听器。它是免费软件,并且可以在GitHub上https://github.com/fflewddur/hola获得。
唯一的要求是需要Java 8,并且在您的类路径中有slf4j-api可用。

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接