首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bonjour?

如何使用Bonjour?
EN

Server Fault用户
提问于 2010-03-03 09:23:28
回答 2查看 45.4K关注 0票数 32
  1. 首先,Bonjour到底做了什么(请阅读我在下面所作的猜测)? 这里 I发现,Bonjour可以在IP网络上自动发现计算机、设备和服务。但我认为它不仅“发现IP网络上的设备”,还通过为Bonjour运行的设备分配IP地址来创建IP网络。我说的对吗?
  2. 我仍然怀念精华。它是以下列方式工作吗?首先,我把设备(例如笔记本电脑)物理连接起来,这样它们就可以相互通信了。然后,假设,在一些笔记本上,我有Bonjour运行,然后,作为一个结果,这些笔记本电脑自动分配IP地址给他们。因此,笔记本电脑( Bonjour正在运行的地方)构建了一个IP网络。是这样工作的吗?
  3. 或者,运行Bonjour的计算机不被认为是一种服务,它不会仅仅因为Bonjour在这台计算机上运行而广播自己。我的意思是,在计算机上运行的应用程序需要使用Bonjour来广播自己。所以,是应用程序自己广播自己(不是计算机),也不是自动完成的(应用程序需要显式地广播自己)。是对的吗?
  4. 我的应用程序如何才能广播自己?我是否可以使用命令行注册一个服务(以便所有使用Bonjour的应用程序都知道出现了一个新服务)?
  5. 此外,我希望有一个使用Bonjour创建的IP网络的应用程序。为此,我的应用程序需要知道网络中存在哪些设备/服务。更详细地说,我的应用程序需要有一个服务列表。列表中的每个服务都应该有一个名称、正在运行的IP地址以及应用程序使用的端口。Bonjour能以某种方式提供这些信息吗?如果是这样的话,它究竟是如何工作的呢?我的程序怎么能从Bonjour那里得到这些信息?我的程序能读取包含上述信息的Bonjour创建的一些文件吗?我可以使用命令行中的一些命令来检索这些信息吗?
  6. 我对从命令行中的文件、环境变量或命令访问有关服务的信息特别感兴趣。在我看来,这些选择是最简单的!因为在这种情况下,我不需要使用任何额外的库来通过特定的编程语言与Bonjour通信。

如果我的问题不清楚,请提问。我会尽量以更清晰的方式提出我的问题。

我使用Windows 7。

补充:我计划用PHP编写我的应用程序。每台计算机都应该运行一台Apache web服务器。我想使用Bonjour来帮助计算机发现彼此(计算机在本地网络中工作)。

EN

回答 2

Server Fault用户

发布于 2010-03-05 12:58:23

首先,Bonjour到底是什么(请读我的猜测,写在下面)?在这里,我发现Bonjour能够在IP网络上自动发现计算机、设备和服务。但我认为它不仅“发现IP网络上的设备”,还通过为Bonjour运行的设备分配IP地址来创建IP网络。我说的对吗?

不完全是这样;正如Jon指出的,DHCP (通常)用于分配IP地址。就像普通DNS将域名转换为IP地址一样,Bonjour用于将临时域名(在本地网络中)转换为提供临时域名的IP地址。

我仍然怀念精华。它是以下列方式工作吗?首先,我把设备(例如笔记本电脑)物理连接起来,这样它们就可以相互通信了。然后,假设,在一些笔记本上,我有Bonjour运行,然后,结果,这些笔记本电脑自动分配IP地址给他们自己。因此,笔记本电脑( Bonjour正在运行的地方)构建了一个IP网络。它这样工作吗?

没有;笔记本电脑很可能是从本地DHCP服务器获得IP地址。Bonjour只是帮助他们找出每个人都能提供给其他人的服务。

或者可能是一台运行Bonjour的计算机,而不是因为Bonjour在这台计算机上运行而被认为是一种服务,并且它不会广播自己。我的意思是,在计算机上运行的应用程序需要使用Bonjour来广播自己。所以,是应用程序自己广播自己(不是计算机),也不是自动完成的(应用程序需要显式地广播自己)。对不对?

是的--一般来说,你的应用程序需要明确地宣传它的存在。这通常可以使用系统提供的库(在OS上常见)或自定义库(例如perl的Net::Bonjour)来完成。

我的应用程序如何才能广播自己?我是否可以使用命令行注册一个服务(这样所有使用Bonjour的应用程序都知道出现了一个新服务)

我不知道有一个命令行工具可以这样做,但是许多主要的编程语言都有可用的库来实现这一点。

此外,我希望有一个应用程序,使用由Bonjour创建的IP网络。为此,我的应用程序需要知道网络中存在哪些设备/服务。更详细的是,我的应用程序需要有一个服务列表。列表中的每个服务都应该有一个名称、正在运行的IP地址和应用程序使用的端口。Bonjour能以某种方式提供这些信息吗?

大多数Bonjour库应该能够为您做到这一点;参见http://search.cpan.org/~chlige/Net-Bonjour-0.96/lib/Net/Bonjour.pm中的第一个示例

如果是这样的话,它到底是如何工作的。我的程序怎么能从Bonjour那里得到这些信息?我的程序能读取Bonjour创建的包含上述信息的文件吗?我可以在命令行中使用一些命令来检索这些信息吗?

使用适当的库,程序使用Bonjour协议询问本地网络中的所有其他计算机,告诉它它们有哪些服务。然后,该库将解析响应并以更有用的格式呈现给您。

我对从命令行中的文件、环境变量或命令访问有关服务的信息特别感兴趣。在我看来,这些选择是最简单的!因为在这种情况下,我不需要使用任何额外的库来通过特定的编程语言与Bonjour通信。

我不知道有这样的工具,但它可能存在。

如果我的问题中有不清楚的地方,请提出问题。我会尽量以更清晰的方式提出我的问题。

更多关于你正在编写的程序将会做什么,以及你用什么语言编写它的更多信息,将使它更容易帮助。

有关更多介绍性信息,请同时尝试:

  • 苹果常见问题:http://developer.apple.com/networking/bonjour/faq.html
  • 维基百科网页:http://en.wikipedia.org/wiki/Bonjour_(软件)
票数 4
EN

Server Fault用户

发布于 2010-03-03 10:11:43

Bonjour不分配IP地址--这是一种发现协议--您仍然需要DHCP/Static/Local(APIPA) IP地址才能工作。

它使用多播DNS (mDNS)来发现主机在同一广播域中的内容,本质上是它自己的DNS服务器。

请参阅Bonjour & 泽罗康夫以获得较低的数据。

除非您的应用程序是用于家庭/非托管网络,也就是说,缺少本地DNS服务器,您只是不需要它。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/118652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档