为Finder创建Bonjour服务
我最近在玩Bonjour这个东西,为了做原型,我使用了Pybonjour这个库,最开始的测试效果还不错。不过,当我想创建一个在Finder中可见的服务时,就遇到了很大的困难。我参考了这个页面,上面列出了可以在Finder中浏览的服务标识符。
我尝试了 _afpovertcp._tcp
,结果它立刻出现在Finder里。但是另外两个比较有趣的服务(_webdav._tcp, _ftp._tcp
)却没有显示出来。我是不是漏掉了什么必要的组件,还是说这是配置错误(比如说默认启用了某个内置防火墙)?我是在使用Snow Leopard 10.6.3进行测试。
我还在一台Ubuntu机器上尝试了服务器部分,结果也是一样。此外,我注意到Terminal.app可以发现FTP服务器(在Ubuntu和OSX服务器上都可以)。
更新:SMB(_smp._tcp
)可以正常工作,和AFP的表现一样。
我想到了一些可能性:
- Finder需要的不仅仅是服务字符串
- FTP和WebDAV服务的发现默认是关闭的,需要以某种方式启用
- 在Snow Leopard中移除了FTP和WebDAV的发现功能(希望不是这样!!)
2 个回答
与其使用Finder,不如试试Bonjour浏览器,链接在这里:http://www.tildesoft.com/Programs.html。这个工具可以帮助你找到所有使用Bonjour的服务。还有一个命令行工具叫做dns-sd,它可以用来模拟发布Bonjour能发现的服务。
比如,输入这个命令:
dns-sd -R "测试打印服务" _printer._tcp "" 666
这个命令就模拟了一个打印服务,Bonjour可以找到它。你可以把_service类型的部分换成其他服务类型来模拟不同的服务。
我正在开发一个使用Bonjour服务的iPad应用,所以我也在学习这些东西。
希望这些信息对你有帮助。
我之前又测试了一下,发现一些Bonjour服务在Snow Leopard和Lion系统中似乎不再可用了。我没有找到相关的文档来说明这个问题,但我把我的结果分享出来,希望能帮助到那些也在寻找相同信息的人。