7

我有一个通过 Bonjour 发布的 iPhone 应用程序。Mac 对应的工作,它们同步和交换数据。现在我必须把那个小的 Mac 应用程序移植到 Windows 上。我决定使用 .NET(因为这就是我所知道的)。

该应用程序并不复杂,但我处于早期阶段。我需要浏览/发现 Bonjour 服务。对于这个任务,我下载了 Mono.Zeroconf 和 A​​pple 最新的 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 中的虚拟机,所以我继续尝试“纯”win XP。没有。

注意:我有 Apple Bonjour 服务(启动并运行)以及 Apple SDK(稍后安装)。

鉴于这不起作用,我继续并决定尝试具有互操作和一些预编译示例(及其源代码)的 Apple SDK。

短篇小说,mDSNBrowser.exe 和 SimpleChat.exe 都不起作用/查看/发现任何东西。

我的盒子是 Parallels 下的 Win7,但这似乎并没有影响任何东西,因为原生 XP 也出现了同样的问题。

我做错了什么?

4

2 回答 2

4

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

于 2010-04-29T17:40:04.347 回答
1

这里有几个重要的参考资料,因为 NuGet 版本、Git 中的源代码版本和 Growl Windows 下载目前似乎都有略微不同的实现。NuGet 包对我不起作用,因此我下载了源代码,进行了建议的更改并重新编译。

如何向 Mono.ZeroConf 注册服务?

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

于 2012-04-04T08:09:48.507 回答