如果我的问题不清楚,请提问。我会尽量以更清晰的方式提出我的问题。
我使用Windows 7。
补充:我计划用PHP编写我的应用程序。每台计算机都应该运行一台Apache web服务器。我想使用Bonjour来帮助计算机发现彼此(计算机在本地网络中工作)。
发布于 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通信。
我不知道有这样的工具,但它可能存在。
如果我的问题中有不清楚的地方,请提出问题。我会尽量以更清晰的方式提出我的问题。
更多关于你正在编写的程序将会做什么,以及你用什么语言编写它的更多信息,将使它更容易帮助。
有关更多介绍性信息,请同时尝试:
发布于 2010-03-03 10:11:43
Bonjour不分配IP地址--这是一种发现协议--您仍然需要DHCP/Static/Local(APIPA) IP地址才能工作。
它使用多播DNS (mDNS)来发现主机在同一广播域中的内容,本质上是它自己的DNS服务器。
请参阅Bonjour & 泽罗康夫以获得较低的数据。
除非您的应用程序是用于家庭/非托管网络,也就是说,缺少本地DNS服务器,您只是不需要它。
https://serverfault.com/questions/118652
复制相似问题