C# 使用苹果&x2019;来自.NET的“你好”服务?

C# 使用苹果&x2019;来自.NET的“你好”服务?,c#,.net,bonjour,C#,.net,Bonjour,我有一个通过Bonjour发布的iPhone应用程序。Mac对等机工作,它们同步和交换数据。现在我必须把那个小小的Mac应用程序移植到Windows上。我决定使用.NET(因为我知道这一点) 这个应用程序并不复杂,但我还处于早期阶段。我需要浏览/发现“你好”服务。为了完成这项任务,我下载了Mono.Zeroconf和苹果最新的SDK(其中包括两个C#示例) 我不是真的粘贴代码,因为我是真的复制/粘贴示例。事实上,Mono.Zeroconf有一个MZClient.exe,可用于测试“所有API”

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

这个应用程序并不复杂,但我还处于早期阶段。我需要浏览/发现“你好”服务。为了完成这项任务,我下载了Mono.Zeroconf和苹果最新的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中的虚拟机,所以我继续在“纯”WinXP上进行了尝试。没什么

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

考虑到这不起作用,我决定继续尝试Apple SDK,它有一个互操作和一些预编译的示例(及其源代码)

简而言之,mDSNBrowser.exe和SimpleChat.exe都不能工作/查看/发现任何内容

我的盒子是Win7 under Parallels,但考虑到本机XP也存在同样的问题,这似乎不会影响任何东西


我做错了什么?

我在.NET中使用了Zeroconf NetServices作为Zeroconf。假设您允许Bonjour通过防火墙,并且您的网络硬件允许多播,那么最大的问题始终是Apple Bonjour服务的不可靠性。常规工作的代码将失败,解决方案是重新启动Bonjour服务。所以,检查你的网络硬件,检查你的防火墙,但最终重新启动几次Bonjour。在第一次、第二次或第三次尝试时,它并不总是有效。这里有几个重要的参考资料,因为NuGet版本、Git中的源代码版本和Growl Windows下载目前似乎都有稍微不同的实现。NuGet包对我不起作用,所以我下载了源代码,进行了建议的更改并重新编译


谢谢Matthew,我已经尝试并设法从命令行的MZClient中查看了使用Apple示例创建的“SimpleChat”会话。我将SimpleChat修改为使用http tcp和p2pchat udp,并且可以看到会话。我会继续调查。它似乎不起作用的是使用mzclient创建的会话(我真的不在乎),只是为了正确性,我认为服务类型应该以点结尾,所以应该是“\u http.\u tcp”。我遇到了一些问题。未找到任何内容的原因可能是消息泵无法为您的mDSNBrowser正常工作。重要的是,您注册了哪些操作。