我有一个通过Bonjour发布的iPhone应用程序。 Mac对应物可以工作,它们可以同步和交换数据。现在我必须将那个小Mac应用程序移植到Windows。我决定使用.NET(因为这就是我所知道的)。
应用程序并不复杂,但我处于早期阶段。我需要浏览/发现Bonjour服务。为此,我已经下载了Mono.Zeroconf和Apple最新的SDK(包括几个C#样本)。
我并没有真正粘贴代码,因为我真的要复制/粘贴样本。实际上,Mono.Zeroconf有一个MZClient.exe,可用于测试“所有API”。
我的第一个测试是 - 在同一个框中 - 打开两个cmd.exe并启动一个MZclient注册服务,另一个,启动它并“发现它”。
它不起作用。
这是服务器:
C:\MZ>MZClient -v -p "_http._tcp 80 mysimpleweb”
*** Registering name = 'mysimpleweb', type = '_http._tcp', domain = 'local.'
*** Registered name = ‘mysimpleweb’
在另一个终端:
c:\MZ>MZClient -v -t "_http._tcp"
Creating a ServiceBrowser with the following settings:
Interface = 0 (All)
Address Protocol = Any
Domain = local
Registration Type = _http._tcp
Resolve Shares = False
Hit ^C when you're bored waiting for responses.
就是这样。什么都没发生。我当然试过不同的服务无济于事。甚至玩那个领域的东西。记住这是同一个盒子。我尝试了另一台计算机,因为这是OSX中的一个虚拟机,所以我继续尝试了一个“纯粹的”胜利XP。什么都没有。
注意:我有Apple Bonjour服务(启动并运行)以及Apple SDK(稍后安装)。
鉴于这不起作用,我继续尝试使用具有Interop和一些预编译样本(及其源代码)的Apple SDK。
简短的故事,mDSNBrowser.exe和SimpleChat.exe都不工作/查看/发现任何内容。
我的盒子是Parallels下的Win7,但这似乎并没有影响任何东西,因为原生XP会出现同样的问题。
我做错了什么?
答案 0 :(得分:4)
我在.NET中使用了Zeroconf NetServices for Zeroconf。假设您允许Bonjour通过您的防火墙,并且您的网络硬件允许多播,最大的问题始终是Apple Bonjour服务的不可靠性。常规工作代码将失败,解决方案是重新启动Bonjour服务。因此,检查您的网络硬件,检查您的防火墙,但最终重启Bonjour几次。它并不总是适用于第一次,第二次或第三次尝试等。
答案 1 :(得分:1)
以下是NuGet版本的几个重要参考资料,Git和Growl Windows下载目前的源版本似乎都有略微不同的实现。 NuGet包对我不起作用,所以我下载了源代码,做了推荐的修改并重新编译。