我可以从命令行使用Bonjour吗?

时间:2010-03-04 13:05:02

标签: networking bonjour zeroconf

是否可以从命令行使用Bonjour?例如,如果我想注册一个服务,我输入类似的东西:bonjour -register service_name port。然后Bonjour为我的服务分配一个免费的IP。或者,例如,如果我想查看可用服务列表,我输入类似:bonjour -showServices。然后我获得所有可用服务的列表及其名称,IP地址和端口。这样的事情存在吗?

我对可用的文档感到困惑。例如here,在文档的开头我看到:

  

要注册您的服务,请致电   DNSServiceRegister。

我应该在哪里打电话?在命令行?在Java?在C ++中?在python中?没有提供这种背景,这有点奇怪。

一般来说,我只找到关于zeroconf和Bonjour的一般信息(它应该做什么)。但我找不到具体而简单的东西。像“Hello World”一样使用Bonjour的例子。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:26)

dns-sd是适用于Windows和Mac OS X的命令行程序。

我经常使用它通过ssh在互联网上传输iTunes分享。我的典型用途是dns-sd -P my_music _daap._tcp. local 3690 localhost 127.0.0.1。这假设我已经在本地主机端口3690上设置ssh隧道侦听到外部网络上共享iTunes的主机的端口3689。这使得一个名为“my_music”的iTunes中出现了一个iTunes分享图标。

答案 1 :(得分:6)

mDNS是dns-sd工具的旧版本。它们都是由Apple编写的命令行工具,用于与Bonjour进行交互。

你可以使用命令行工具用Bonjour做一些事情,但引用dns-sd手册页:

  

dns-sd命令主要用于交互式使用。由于其命令行参数和输出格式可能会发生变化,因此从shell脚本调用它通常会很脆弱。

     

如果您希望从脚本语言执行DNS服务发现操作,那么执行此操作的最佳方法是不执行dns-sd命令,然后尝试解密文本输出,而是直接调用DNS- SD API使用您所选语言的绑定。

     

例如,如果您使用Ruby进行编程,则可以使用http://rubyforge.org/projects/dnssd/中记录的dnssd包直接调用DNS-SD API。   其他语言的类似绑定也在开发中。

例如,您询问了“DNSServiceRegister”,它是一个C函数:
http://developer.apple.com/library/mac/#documentation/Networking/Reference/DNSServiceDiscovery_CRef/dns_sd_h/index.html#//apple_ref/c/func/DNSServiceRegister

答案 2 :(得分:1)

是的,这当然是可能的。查看mDNS

的手册页