使用.NET的Apple的Bonjour服务?

时间:2010-04-29 17:07:36

标签: c# .net bonjour

我有一个通过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会出现同样的问题。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

我在.NET中使用了Zeroconf NetServices for Zeroconf。假设您允许Bonjour通过您的防火墙,并且您的网络硬件允许多播,最大的问题始终是Apple Bonjour服务的不可靠性。常规工作代码将失败,解决方案是重新启动Bonjour服务。因此,检查您的网络硬件,检查您的防火墙,但最终重启Bonjour几次。它并不总是适用于第一次,第二次或第三次尝试等。

答案 1 :(得分:1)

以下是NuGet版本的几个重要参考资料,Git和Growl Windows下载目前的源版本似乎都有略微不同的实现。 NuGet包对我不起作用,所以我下载了源代码,做了推荐的修改并重新编译。

How to register a service with Mono.ZeroConf?

http://bryanprice.info/2011/01/29/mono-zeroconf-on-windows/