15

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

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

要注册您的服务,请调用 DNSServiceRegister。

我应该在哪里称呼它?在命令行中?在 Java 中?在 C++ 中?在蟒蛇?没有提供这种上下文有点奇怪。

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

有人可以帮我吗?

4

3 回答 3

27

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

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

于 2010-03-04T21:19:24.627 回答
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

于 2011-12-01T02:12:41.853 回答
1

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

于 2010-03-04T13:12:06.537 回答